ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:23.08KB ,
资源ID:18241144      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18241144.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(机软二次作业Word文档下载推荐.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

机软二次作业Word文档下载推荐.docx

1、top=N-1) printf(nStack Overflow!n); return (False); else s-top+; |*新节点指向栈顶并将其数据赋值*|stacks-top=x; return (True);/* Initialize Stack */ElemType Pop(STACK *s) ElemType x; int i;toptop+1; x=s-stacki;|*该走的车开出后其余的车依原来的次序进场*| return x; /* Pop */void IniLinkedQue(LinkedQueTp *s) QUEUE *p1;front=(QUEUE *)mal

2、loc(sizeof(QUEUE);|*申请新节点*|rear=s-front;|*队空*| p1=s- p1-next=Null; /* 头结点指针域初始化 */num=0; /* 头结点数据域初始化 */* IniLinkedQue */void EnLinkedQue(LinkedQueTp *s,int num1) /* 数据入队列(链接式循环队列) */ QUEUE *p,*p1; p=(QUEUE *)malloc(sizeof(QUEUE); /* 产生一个新节点 */ p-num=num1;rear; /* 加入队尾 */next=p;rear=p;num+; /* 修改保存在

3、头结点数据域中的车辆数 */* EnLinkedQue */int DeLinkedQue(LinkedQueTp *s) /* 数据节点出队列 */ QUEUE *p; int n;front=s-rear) return (Null);|*判断是否队空*| p=s-front-next;|*令p指向头指针的前一个*|next=p-|*删除节点p*| if(p-next=Null) s-|*判断是否为空*| n=p-num; free(p);|*释放节点p*|num-;|*s指向队头数量递减*| return (n); /* DeLinkedQue */void Arrive(STACK *

4、s1,LinkedQueTp *p,ElemType x) /* 车辆到达处理 */ int f,no1,no2; /* 可以删去 */ f=Push(s1,x); /* 新到车辆进入停车场栈 */ if(f=False) /* 如停车场满, 就进入便道队列等待 */ EnLinkedQue(p,x.num);no1=p- /* 可以删去 */printf(第%d号车停在便道的第%d号车位上n,x.num,no1); /* 改为:,x.num,p-num); */ else /* 新到车辆进入停车场 */no1=s1- /* 可以删去 */no2=x.num;第%d号车停在停车场的第%d号车位

5、上n,no2,no1);,x.num,s1-top+1); /* Arrive */void Delive(STACK *s1,STACK *s2,LinkedQueTp *p,ElemType x) /* 离开处理 */ int n,f=False; ElemType y,z; /* 增加z */ QUEUE *q; while(s1-top-1) & (f!=True) /* 在停车场中寻找要离开的车辆 */ y=Pop(s1); if(y.num!=x.num) /* 如果栈顶元素不是要离开的车辆,就将其放如车辆规闭所*/ n=Push(s2,y); else f=True;/*/ if

6、(y.num=x.num) /*在停车场中找到要离开的车辆*/第%d号车应收费%d元,y.num,(x.arrtime-y.arrtime)*M); while(s2-1) -1) /* 调整到*处,将y改为z */ y=Pop(s2); f=Push(s1,y); n=DeLinkedQue(p); if(n!=Null) /* 有车在队列中等待 */ y.num=n; y.arrtime=x.arrtime;第%d号车停在停车场第%d号车位上n,y.num,s1- else /*在停车场中没有找到要离开的车辆*/-1) /* 删除 */y=Pop(s2);f=Push(s1,y); q=p

7、- /* 指向队头 */ f=False; while(f=False & q-next !=Null) /*在便道上寻找要离开的车辆*/ if(q-next-num!=x.num) q=q-next=q- /*在便道上找到该车辆*/next=Null) p-rear=q; /* =p-front是错误的 */第%d号车离开便道n,x.num);/*该车离开便道,但不收费*/ f=True; if(f=False)输入数据错误,停车场和便道上均无第%d号车nvoid main() /* 停车场模拟管理程序 */ char ch1,ch2; STACK *s1,*s2; LinkedQueTp

8、*p; int flag,t1,t2; s1=(STACK *)malloc(sizeof(STACK); s2=(STACK *)malloc(sizeof(STACK); p=(LinkedQueTp *)malloc(sizeof(LinkedQueTp); IniStack(s1); /* 初始化停车场栈 */ IniStack(s2); /* 初始化车辆规避所栈 */ IniLinkedQue(p);/* 初始化便道队列 */ flag=True; for(;) clrscr();n输入数据:A/D,车牌号,到达时间/离开时间nE-退出。 scanf(%c,%d,%d,&ch1,&t

9、1,&t2); x.num=t1; x.arrtime=t2; /* 只记录小时值,没有考虑分钟 */ ch2=getchar(); /* 清空输入缓冲区 */ switch(ch1) case a: Arrive(s1,p,x);nPress any key to continue.n getch(); break;d Delive(s1,s2,p,x);eE flag=False; printf(n程序正常结束n break; default:n输入数据错误,重新输入n if(flag=False) break; /* 退出循环 */ /*迷宫问题*/#define M2 12#defin

10、e N2 11#define MAXLEN M2string.hint M=M2-2,N=N2-2;typedef struct elem int x,y,dir;typedef struct stktag ElemType stackMAXLEN;|*存放站的数据元素*|*棧顶指针用来存放棧顶元素在数组中的下标*|typedef struct moved int dx,dy;MOVE;void IniMaze(int mazeN2); /*初始化迷宫*/void IniMove(MOVE move); |*移动位置*| |*初始化棧s*|*进栈*|void path(int mazeN2,M

11、OVE move,STACK *s);|*初始化路径*|void draw(int mazeN2,STACK *s);|*初始化迷宫数组*|void main() /* 寻找迷宫通路程序*/ STACK *s; int mazeM2N2; MOVE move8; IniMaze(maze); /* 初始化迷宫数组 */ s=(STACK *)malloc(sizeof(STACK); IniStack(s);|*初始化棧s为空栈*| IniMove(move);|*移动位置*| path(maze,move,s);|迷宫路径*| draw(maze,s);/* main */void IniM

12、aze(int mazeN2) /*初始化迷宫*/ int i,j,num; for(i=0,j=0;i=M+1;i+) mazeij=1; for(i=0,j=N+1;i+) mazeij=1;|*沿数组横向移动*|j=N+1;j+) mazeij=1; for(i=M+1,j=0;|*沿数组纵向移动*| for(i=1;=M;i+) for(j=1;=N;j+) num=(800*(i+j)+1500) % 327;|*将0和1散乱分布*| if (num|*s进棧并将其赋值为x*|/* Push */ElemType Pop(STACK *s) |*出棧*| ElemType elem;

13、 elem.x=Null; elem.y=Null; elem.dir=Null; return (elem);|*判断是否为空栈*|*从棧顶出棧*| return (s-top+1);/* pop */void path(int mazeN2,MOVE move,STACK *s) |*移动路径*| int i,j,dir,x,y,f; i=1; j=1; dir=0; maze11=-1; /* 设11为入口处 */ do x=i+movedir.dx; /* 求下一步可行的到达点的坐标 */ y=j+movedir.dy; if(mazexy=0) elem.x=i; elem.y=j;

14、 elem.dir=dir; f=Push(s,elem); if(f=False) printf(栈长度太短n i=x; j=y; mazexy=-1; else if(dirtop=-1) & (dir=7) | (x=M)&(y=N)&(mazexy=-1);top=-1) printf(此迷宫无路n elem.x=x;elem.y=y;elem.dir=dir;|*进棧函数*|n迷宫的通路是: i=0; while(itop) (%d,%d),s-stacki.x,s-stacki.y); /* 显示迷宫通路 */ if(i!top) printf(-|*非空*| if(i+1)%4=

15、0) printf( i+; /* path */void draw(int mazeN2,STACK *s) |*初始化路径数组*| int i,j;i+) /* 将迷宫中全部的-1值恢复为0值 */j+) if(mazeij=-1) mazeij=0; while(s-1) /* 根据栈中元素的坐标,将通路的各个点的值改为8 */ mazeij=8; else if(mazeij=8) printf( %c,*|*再通路标记*| /* 显示已标记通路的迷宫 */* draw */ /* 迷宫2-最短路线 */#define MAXLEN M2*N2typedef struct elem /

16、* 定义栈元素的数据类型 */ int x,y; int dir;typedef struct stktag /* 定义顺序栈结构 */|*存放棧的数据元素*| STACK;typedef struct QueEle /* 定义队列元素的数据类型 */ int pre; QueElem;typedef struct QueTag QueElem queueMAXLEN; int front,rear;|*定义队头队尾*| QUEUE;typedef struct moved /* 定义方向位移数组元素的类型 */ MOVE;|8初始化移动方位*|*初始化s为空棧*|*x进棧*|*出栈函数*|int shortpath(int mazeN2,MOVE move,QUEUE *p);void IniQueue(QUEUE *s); /* 初始化队列 */void printpath(QUEUE *p,STACK *s); int mazeM2N2,f;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1