数据结构课程设计报告2Word文档下载推荐.docx
- 文档编号:17281419
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:22
- 大小:263.59KB
数据结构课程设计报告2Word文档下载推荐.docx
《数据结构课程设计报告2Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告2Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
InitStack(&
S)
操作结果:
构造一个空栈S。
Push(&
S,e)
初始条件:
栈S已经存在。
在栈S的栈顶插入新的栈顶元素e。
Pop(&
S,&
e)
删除S的栈顶元素,并以e返回其值。
StackTraverse(S,visit())
从栈底到栈顶依次对S中的每一个元素调用函数visit().
}ADTstack
2.设定队列的抽象数据类型定义为:
D={ai|ai∈Elemset,i=1,2,……,n,n>
约定其中ai为队列头,an为队列尾.
基本操作:
InitQueue(&
Q)
操作结果:
构造一个空队列Q.
DestroyQueue(&
Q).
初始条件:
队列Q已存在
队列Q被销毁,不再存在.
ClearQueue(&
队列Q已存在.
将Q清为空队列.
QueueEmpty(Q)
若Q为空队列,则返回True,否则返回False.
QueueLength(Q)
队列Q已经存在.
返回Q的元素个数,即队列的长度.
GetHead(Q,&
Q为非空队列.
用e返回Q的对头元素.
EnQueue(&
Q,e)
插入元素e为Q新的队尾元素.
DeQueue(&
Q,&
删除Q的队头元素,并用e返回其值.
QueueTraverse(Q,visit())
Q已存在且非空.
从队头到队尾,依次对Q的每一个数据元素调用函数visit().一旦visit()失败,则操作失败.
}ADTQueue
四、源代码
#include<
stdio.h>
malloc.h>
stdlib.h>
#defineOVERFLOW-2
#defineERROR0
#defineSTACK_INIT_SIZE3
#defineOK1
intcc,bb,n,z=1;
typedefstructCarinfor{
intposition;
intintime;
//进入时间
intCarnumber;
//车牌号
inttime;
intcost;
intouttime;
}Carinfor;
typedefstructSqstack{
structCarinforCar[STACK_INIT_SIZE+1];
inttop;
}Sqstack;
typedefstructCarRR{
structCarinfordata;
structCarRR*next;
}QNode,*QueuePtr;
typedefstructLinkQueue{
QueuePtrfront;
QueuePtrrear;
}LinkQueue;
intInitStack(Sqstack*S)
//构建栈(车库)
{
S->
top=0;
returnOK;
}
//插入e(汽车入库)
intPush(Sqstack*S,Carinfor*e)
top++;
Car[S->
top].Carnumber=e->
Carnumber;
e->
position=S->
top].position=S->
top;
top].intime=e->
intime;
top].time=e->
time;
top].cost=e->
cost;
top].outtime=e->
outtime;
returnOK;
intCarParkEmpty(Sqstack*S)
//判断栈空
return(S->
top==0?
1:
0);
intCarParkfull(Sqstack*S)
top==STACK_INIT_SIZE?
/*intGettop(Sqstack*S,Carinfor*e)
}*/
intInitQueue(LinkQueue*Q)
//队列(通道)的建立
Q->
front=Q->
rear=(QueuePtr)malloc(sizeof(QNode));
if(!
Q->
front)exit(OVERFLOW);
front->
next=NULL;
intEnQueue(LinkQueue*Q,Carinfor*e)
//插入e(汽车进入通道)
{QueuePtrp;
p=(QueuePtr)malloc(sizeof(QNode));
p)exit(OVERFLOW);
p->
data.Carnumber=e->
data.intime=e->
rear->
next=p;
rear=p;
}//EnQueue
intDeQueue(LinkQueue*Q,Carinfor*e)
//删除e(汽车出通道)
if(Q->
front==Q->
rear)returnERROR;
p=Q->
next;
Carnumber=Q->
data.Carnumber;
intime=Q->
data.intime;
next=p->
if(Q->
rear==p)Q->
rear=Q->
front;
free(p);
}//DeQueue
voidCarCost(Carinfor*r)
{inta;
r->
time=r->
outtime-r->
a=r->
printf("
\n停车%d小时\n"
r->
time);
每小时收费1元\n"
);
cost=1*a;
请支付金额%d元\n"
cost);
}
voidOUTPRINTF(Carinfor*W)
//打印出库信息
{
{printf("
╔**************************************************************************╗\n"
║※※※※※※※※※※§
感谢光临飞旋车库,祝你一路平安§
※※※※※※※※※║n"
╠******************╦********************╦********************************╣\n"
║进库时间:
%8d║出库时间:
%8d║停车位置:
%8d║\n"
W->
intime,W->
outtime,W->
position);
╠═════════╩════════╦═╩════════════════╣\n"
║累计时间:
%5d║收取费用:
%5d║\n"
time,W->
╚══════════════════╩══════════════════╝\n"
}//(此处由于纸张限制。
所以与cpp文件中的源代码有一些差别)
voidINPRINTF(Carinfor*W)
//打印进库信息
{printf("
╔**********************************************************************╗\n"
║※※※※※※※§
欢迎进入飞旋车库,本车库收费10元/小时!
§
※※※※※※※║\n"
╠************************************╦********************************╣\n"
║¤
进库时间:
%5d║¤
停车位置%5d║\n"
╠************************************╩********************************╣\n"
║感谢你对本车库的大力支持,我们将来带给你最优质的服务!
║\n"
╚═══════════════════════════════════╝\n"
}//(此处由于纸张限制。
voidHelp()
║※※※※※※※※※※※§
欢迎进入客服/帮助界面§
※※※※※※※※※※※※※║\n"
╠**************************************************************************╣\n"
║服务台地址:
向东500米路南边。
客服电话:
011111111。
║基本操作:
此服务系统为车库管理系统。
在初始界面选择相应的选项进入相应的操║\n"
)printf("
║作。
返回上一页面可根据提示在相应时间输入按键6。
其他操作根据屏幕提示完成。
║\n"
╚═════════════════════════════════════╝\n"
voidTitle()
printf("
\n╔***************************************************************************╗\n"
║※※※※※※※※§
※※※※※※※※║\n"
╚***************************************************************************╝\n"
*******************************************************************************\n"
请选择所需管理选项:
1.进站2.出站3.客服/帮助4.查找5.退出你选的服务选项:
"
scanf("
%d"
&
n);
-------------------------------------------------------------------------------\n"
voidPrint1(Sqstack*S)
{inti=0;
for(;
i<
S->
i++)
{printf("
\n***************************************************************************\n"
¤
车牌号%d将停在第%d个位子.开始计费时间:
%d\n"
S->
Car[i+1].Carnumber,S->
Car[i+1].position,S->
Car[i+1].intime);
***************************************************************************\n"
}
voidprint2(Sqstack*S,intn)
if(CarParkEmpty(S))printf("
没有此车!
"
else
{for(;
if(S->
Car[i].Carnumber==n)break;
Car[i].Carnumber,S->
Car[i].position,S->
Car[i].intime);
voidExitprint()
printf("
感谢使用!
正在推出....\n"
}
voidIn_CarPark(Sqstack*S,LinkQueue*Q,Carinfor*r)
//输入函数
if(CarParkfull(S))
{
&
车库已满,请等候!
有车位我们将在第一时间提醒你!
谢谢合作!
\n"
EnQueue(Q,r);
cc=0;
}
{
cc=1;
Push(S,r);
\n停车成功!
你的车的信息如下:
车牌号%d,所在位置%d,开始计费时间:
%d\n"
Carnumber,r->
position,r->
intime);
voidOut_CarPark(Sqstack*S,Sqstack*S0,Carinfor*r,LinkQueue*Q)
//输出函数
{inttag=S->
Carinforx;
if(CarParkEmpty(S)){bb=0;
{for(;
r->
Carnumber!
=S->
Car[tag].Carnumber&
tag>
0;
tag--)
{Push(S0,&
Car[tag]);
top--;
}
if(r->
Carnumber==S->
Car[tag].Carnumber)
{CarCost(r);
bb=1;
S0->
top>
top--)
Push(S,&
Car[S0->
top]);
top<
STACK_INIT_SIZE&
front!
=Q->
rear)
{DeQueue(Q,&
x);
│在等候通道等候的车辆中前%d辆号驶入停车场...\t\t│\n"
STACK_INIT_SIZE-S->
top);
elseif(tag==0)
{printf("
未进入停车场应支付金额0元!
bb=0;
{inta,b,m=0,i=1,j,h,dy,Carnumber;
Carinforc[10];
SqstackCarpark,Carpark1;
LinkQueueCarroad;
InitQueue(&
Carroad);
Carpark);
Carpark1);
for(;
z;
)
Title();
switch(n)
case1:
返回上一页请输6。
否则请输0。
请输入:
scanf("
b);
if(b==6)
{printf("
感谢您使用本系统\n"
退出\n"
break;
printf("
\n>
汽车车牌号"
scanf("
c[i].Carnumber);
汽车进站时间:
c[i].time);
c[i].intime=c[i].time;
In_CarPark(&
Carpark,&
Carroad,&
c[i]);
if(cc){printf("
是否打印小票:
1.是2.否。
请选择:
a);
if(a==1)
INPRINTF(&
i++;
}break;
case2:
否则请输0.请输入:
if(b==6)
{
printf("
已返回\n"
}
请输入您的车牌号:
j);
for(h=0;
h<
10;
h++)
if(j==c[h].Carnumber)break;
printf("
汽车离开车库时间:
c[h].outtime);
Out_CarPark(&
Carpark1,&
c[h],&
if(bb){printf("
OUTPRINTF(&
c[h]);
}break;
case3:
否则请输0"
scanf("
h);
if(h==6)
Help();
}break;
case4:
”返回上一页请输6。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告