数据结构课程设计Word文档下载推荐.docx
- 文档编号:16400630
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:57
- 大小:30.31KB
数据结构课程设计Word文档下载推荐.docx
《数据结构课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计Word文档下载推荐.docx(57页珍藏版)》请在冰豆网上搜索。
i++;
if(i==1)
{
s=p;
q=p;
}
else{
q->
next=p;
q=q->
next;
}
}
voidEmpInsert()
employee*p,*q=s;
while(q->
next!
=NULL)
q=q->
p=(employee*)malloc(SIZE);
scanf_s("
p->
name,20);
number);
post,20);
q->
p->
n++;
voidEmpDelete(intnum)
employee*p=s,*q=s;
inti=0,j=0;
while(j<
n){
i=p->
number;
if(i==num){
if(p==s){
s=s->
next;
}
else{
q->
next=p->
n--;
return;
else{
q=p;
p=p->
j++;
printf("
numbernotfound\n"
voidEmpPrint()
employee*p=s;
thelistofemployees\n"
while(p!
printf("
%s\t%d\t%s\n"
p->
name,p->
number,p->
post);
int_tmain(intargc,_TCHAR*argv[])
intl,m;
createlist,pleaseenterthenumberoftheemployee\n"
n);
InitComp();
EmpPrint();
while
(1)
{
enternumbertochooseaction:
1forindert,2fordelete\n"
l);
switch(l)
case1:
EmpInsert();
EmpPrint();
break;
case2:
pleaseenterthenumberoftheemployeeyoudelete\n"
scanf_s("
m);
EmpDelete(m);
default:
system("
pause"
return0;
2、约瑟夫(Josephus)环问题:
编号为1,2,3,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。
一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止。
报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,直到所有人全部出列为止。
建立n个人的单循环链表存储结构,运行结束后,输出依次出队的人的序号。
structperson
intnum;
intcode;
person*next;
};
person*h;
voidCreaCircle()
intn,i;
person*p,*q=NULL,*r=NULL;
pleaseenterthrnemberofpeople:
for(i=1;
i<
n+1;
i++)
p=(person*)malloc(sizeof(person));
num=i;
pleaseenterthecodeofthe%dperson:
i);
code);
if(i==1)
h=p;
q->
q=p;
next=h;
voidRunGame()
intm,i;
person*r,*t=h;
pleaseenterthefirstcode:
while(t->
next!
=t)
for(i=1;
m-1;
t=t->
r=t->
m=r->
code;
t->
next=r->
the%dpersoniskicked\n"
r->
num);
intmain(){
CreaCircle();
RunGame();
return0;
栈和队列
3、某商场有一个100个车位的停车场,当车位未满时,等待的车辆可以进入并计时;
当车位已满时,必须有车辆离开,等待的车辆才能进入;
当车辆离开时计算停留的的时间,并且按照每小时1元收费。
汽车的输入信息格式可以是(进入/离开,车牌号,进入/离开时间),要求可以随时显示停车场内的车辆信息以及收费历史记录。
#include<
iostream>
time.h"
windows.h>
usingnamespacestd;
#defineLIST_INIT_SIZE10
#definePRICE1
typedefstructCar
intcarnumber;
intmoney;
time_tentertime;
time_tleavetime;
}Car;
typedefstructParkList{
Car*head;
intlength;
intlistsize;
}ParkList;
typedefstructWaitNode{
CarWaitCar;
WaitNode*next;
}WaitNode,*WaitList;
typedefstructLeaveNode{
CarLeaveCar;
LeaveNode*next;
}LeaveNode,*LeaveList;
intinit_LeaveList(LeaveList&
L){
L=(LeaveList)malloc(sizeof(LeaveNode));
L->
next=NULL;
intinit_WaitList(WaitList&
WL,Carwc){
WL=(WaitList)malloc(sizeof(WaitNode));
WL->
WaitCar=wc;
voidPut_LeaveList(LeaveList&
L,Carlc){
LeaveListp=L;
if(p==NULL){
return;
while(p->
next){
p=p->
LeaveListq=(LeaveList)malloc(sizeof(LeaveNode));
LeaveCar=lc;
next=q;
LeaveCar.money=(q->
LeaveCar.leavetime-q->
LeaveCar.entertime)*PRICE;
voidPutelem_WaitList(WaitList&
WaitListp=WL;
init_WaitList(WL,wc);
WaitListq=(WaitList)malloc(sizeof(WaitNode));
voiddelete_WaitList(WaitList&
WL,Car&
c){
if(WL==NULL){
c=p->
WaitCar;
if(WL->
next==NULL){
WL=NULL;
else{
WL=WL->
free(p);
CarCreateCar(intcarnum){
Car*pc=(Car*)malloc(sizeof(Car));
pc->
carnumber=carnum;
entertime=time(NULL);
return*pc;
intinit_Parklist(ParkList&
p)
p.head=(Car*)malloc(LIST_INIT_SIZE*sizeof(Car));
if(!
p.head)return0;
p.length=0;
p.listsize=LIST_INIT_SIZE;
return1;
intput_ParkList(ParkList&
p,WaitList&
WL,Carc)
if(p.length==p.listsize){
if(WL==NULL){
init_WaitList(WL,c);
elsePutelem_WaitList(WL,c);
Car*pc=p.head;
pc[p.length]=c;
p.length+=1;
intinsert_ParkList(ParkList&
WL,inti)
Carc;
delete_WaitList(WL,c);
if(i<
0||i>
=p.length){return0;
for(intj=p.length-1;
j>
i-1;
j--)
pc[j+1]=pc[j];
pc[i]=c;
intdelete_ParkList(ParkList&
p,LeaveList&
L,inti)
if(i>
=0&
&
i<
p.length)
pc[i].leavetime=time(NULL);
Put_LeaveList(L,pc[i]);
for(intj=i;
j<
p.length-1;
j++)
pc[j]=pc[j+1];
p.length-=1;
elsereturn0;
voidshowParkList(ParkListp)
if(p.head!
ParkList:
for(intj=0;
p.length;
%d%s\n"
pc[j].carnumber,ctime(&
pc[j].entertime));
voidshowWaitList(WaitListWL){
WaitList:
while(p){
WaitCar.carnumber,ctime(&
WaitCar.entertime)));
voidshowLeaveList(LeaveListL){
LeaveListp=L->
LeaveList:
LeaveCar.carnumber,
ctime(&
LeaveCar.entertime)));
%s%d\n"
ctime(&
LeaveCar.leavetime)),p->
LeaveCar.money);
intmain()
ParkListp;
LeaveListL;
WaitListWL=NULL;
init_LeaveList(L);
init_Parklist(p);
srand(time(NULL));
inti=1,n=0;
intdic=0;
intindex=0;
inttime=0;
while(i<
=100){
dic=rand()%2;
switch(dic){
case1:
c=CreateCar(1000+i);
put_ParkList(p,WL,c);
break;
case0:
if(p.length==0){
index=rand()%p.length;
delete_ParkList(p,L,index);
if(WL!
=NULL){
insert_ParkList(p,WL,index);
default:
i++;
showParkList(p);
showWaitList(WL);
showLeaveList(L);
4、某银行营业厅共有6个营业窗口,设有排队系统广播叫号,该银行的业务分为公积金、银行卡、理财卡等三种。
公积金业务指定1号窗口,银行卡业务指定2、3、4号窗口,理财卡业务指定5、6号窗口。
但如果5、6号窗口全忙,而2、3、4号窗口有空闲时,理财卡业务也可以在空闲的2、3、4号窗口之一办理。
客户领号、业务完成可以作为输入信息,要求可以随时显示6个营业窗口的状态。
typedefstructCost
Cost*next;
}Cost,*CostList;
voidInitCL(CostList&
CL,intnumber)
CL=(CostList)malloc(sizeof(Cost));
CL->
num=number;
voidPutCL(CostList&
CostListp=CL,q;
if(CL==NULL)
InitCL(CL,number);
else
while(p->
next)
q=(CostList)malloc(sizeof(Cost));
voidPopCL(CostList&
CL,int&
number)
CostListp=CL;
if(CL==NULL)
number=0;
number=CL->
num;
CL=CL->
free(p);
voidShowCL(CostList&
CL)
while(p)
%d"
num);
p=p->
inta[6]={0},n,costnum=0,i=0,j=0,m;
CostListCL1=NULL,CL2=NULL,CL3=NULL;
请选择业务种类\n1.公积金业务\n2.银行卡业务\n3.理财卡业务\n4.业务办理完成\n5.显示当前窗口营业状态\n6.显示当前排队情况\n"
switch(n)
case1:
i++;
您的序号为:
%d\n"
i);
if(CL1==NULL)
InitCL(CL1,i);
else
PutCL(CL1,i);
case2:
if(CL2==NULL)
InitCL(CL2,i);
PutCL(CL2,i);
case3:
if(CL3==NULL)
InitCL(CL3,i);
PutCL(CL3,i);
case4:
正在营业的窗口:
for(j=0;
j<
6;
j++)
{
if(a[j]!
=0)
printf("
j+1);
请选择业务办理完成的窗口号:
a[m-1]=0;
case5:
窗口营业情况:
%d号窗口正在为%d号客户服务\n"
j+1,a[j]);
case6:
办理公积金业务的客户有:
ShowCL(CL1);
办理银行卡业务的客户有:
ShowCL(CL2);
办理理财卡业务的客户有:
ShowCL(CL3);
if(a[0]==0)
PopCL(CL1,costnum);
a[0]=costnum;
if(a[4]==0)
PopCL(CL3,costnum);
a[4]=costnum;
if(a[5]==0)
a[5]=costnum;
if(a[1]==0)
if(CL2!
=NULL)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计