数据结构实验指导书(网络1401-1402).docx
《数据结构实验指导书(网络1401-1402).docx》由会员分享,可在线阅读,更多相关《数据结构实验指导书(网络1401-1402).docx(34页珍藏版)》请在咨信网上搜索。
1、陕西理工大学重点课程数据结构实验指导书使用班级:网络1401-1402数学与计算机科学学院计算机科学与技术系2016年9月return(S-top=-1 ?TRUE:FALSE);Iint Isfull(SeqStack *S)(return(S-top=Stack_size- 1?TRUE:FALSE);int Push(SeqStack *S,char x)(if(S-top=Stack_size-1)(printf(”栈满n”);return FALSE;)elseS-top+;S-dataS-top=x; return TRUE;Iint Pushn(SeqStack *S,int x
2、)if(S-top=Stack_size-1)(printf(栈满 n”);return FALSE;)else(S-top+;S-dataS-topJ=x;return TRUE;int Popn(ScqStack *S,int *x)( if(S-top=-l)printf(”操作数为空n“); return FALSE;else(*x=S-dataS-top;S-top-; return TRUE;Iint Pop(ScqStack *S,char *x)(if(S-top=-l) printf(”操作符为空n”); return FALSE;else(*x=S-dataS-top; S
3、-top-;return TRUE;Ichar Gettop(SeqStack *S)Iif(S-top=-l)(printfC栈为空n”); return FALSE;else(retum(S-dataS-topJ);int Isoperator(char ch)int i; for(i=0;iv7;i+)(if(ch=opsi)return TRUE;)return FALSE;char Compare(char ch 1 ,char ch2)char pri;int priority; for(i=0;i:Pop(&OPTR,&op);Popn(&OPND,&b);Popn(&OPND,
4、&a); v=Execute(a,op,b); Pushn(&OPND,v); break;case:Pop(&OPTR,&op);ch=strij;i+; break:v=Gcttop(&OPND);return v;Ivoid main()int result;system(clr);result=ExpEvaluation();printf(表达式的结果为:%dnu,result);实验四队列一、实验性质:必做二、实验学时:2学时三、实验类型:验证四、实验目的:1. 掌握队列顺序存储结构和链式结构,以便在实际背景下灵活运用。2. 掌握队列的特点,即进先出的原则。五、实验内容:1)实现队列
5、入队、出队操作;2)利用栈和队列知识实现停车场管理。根据题目要求,停车场只有一个大门,因此可用一个栈来模拟;而当栈满后, 继续来的车辆只能停在便道上,根据便道停车的特点,可知这可以用一个队列来 模拟,安排队的车辆先离开便道,进入停车场。由于在停车场中间的车辆可以提 前离开停车场,而且要求在离开车辆到停车场大门之间的车辆都必须先离开停车 场,让此车离去,然后再让这些车辆依原来的次序进入停车场,因此在一个栈和 一个队列的基础上,还需要有一个地方保存为了让路离开停车场的车辆,很显然 这也应该用一个栈来模拟。因此本题中用到两个栈和一个队列。对于停车场和车辆规避所,有车辆进入和车辆离去两个动作,这就是栈
6、的进 栈和出栈操作,只是还允许排在中间的车辆先离开停车场,因此在栈中需要进行 查找。而对于便道,也有入队列和出队列的操作,同样允许排在中间的车辆先离 去队列。这样基本动作只需利用栈和队列的基本操作就可实现。六、程序实现:#include stdio.h #include,stdlib.h” #define N 5 #define M 10 typedef struct int num; int arrtime; Stacktype; typedef struct定义停车场长度定义栈元素的类型定义栈Stacktype stackN;int top; Stack;typcdef struct no
7、de定义队列节点类型int num;struct node *next;Queneptr;typedef struct/ 定义队列(Queneptr * front, *rear;JQuene;void initstack(Stack *s)初始化栈s-top=-1;)int push(Stack *s,Stacktype x) 数据元素X进入指针S所指的栈(if(s-top=N-l)return(O);else(s-stack+s-top=x;return(l);)Stacktype pop(Stack *s)Stacktypc x;if(s-topstack s-top;s-top-;re
8、turn x;void initquene(Quene *s) 初始化队列(s-front=(Queneptr*)malloc(sizeof(Queneptr);/产生一个新结点,作为头结点 s-rear=s-front;s-front-next=NULL;s-front-num=0;头结点的NUM保存队列元素的个数void enquene(Quene *s,int num) 数据入队列Queneptr *p;p=(Queneptr*)malloc(sizeof(Queneptr);p-num=num; p-next=NULL;s-rear-next=p;s-rear=p; s-front-n
9、um+;int delquene(Quene *s)Queneptr *p;int n;if (s-front=s-rear)如果队列空return(O);elsep=s-front-next; s-front-next=p-next; if (p-next=NULL) s-rear=s-front;n=p-num;free(p);s-front-num;return(n);()void arrive(Stack *sl,Quene *p,Stacktype x)int f;f=push(sl,x);新到达的车辆入停车栈if(f=O)enquene(p,x.num);如果停车场满,就进入队列p
10、rintf(the %d car stops the %d seat of the quenen,x.num,p-front-num); )else printf(the %d car stops the %d seat of the stacknn,x.num,s 1 -top+1);void leave(Stack *sl,Stack *s2,Quene *p,Stacktype x) 处理车辆离去函数 int n,f=0;Stacktype y;Queneptr *q;while(s 1 -top- !)&(! f)(y=pop(sl);if(y.num!=x.num)n=push(s2
11、,y);else f=l;if(y.num=x.num) 如果栈顶元素不是要离开的车辆,就将其放入车辆规避所 (printf(thc money of the %d is %d yuannM,y.num,(x.arrtime-y.arrtime)*M); while(s2-top-l)(y=pop(s2); f=push(sl,y);n=delquene(p);if(n)在停车场中找到要离开的车辆y.num=n;y.arrtime=x.arrtime;f=push(sl,y);printf(Hthe %d car stops the %d seat of the stakn,y.num,s 1
12、 -top+1);)elsewhile(s2-top-1)车辆规避所不空,将其全放回停车场(y=pop(s2);f=push(s l,y);q=p-front;f=0;while(f=O&q-next!=NULL)if(q-next-num!=x.num) 如果便道上有车辆,将第一辆车放入停车场 q=q-next;else(q-next=q-next-next;p-front-num;数据结构上机实验的目的和要求.1实验一线性表的基本操作2实验二链表的基本操作.6实验三栈7实验四队列12实验五二叉树的操作.19实验六图的有关操作.22实验七电话号码查询系统的设计与实现.29if(q-next=
13、NULL)p-rear=p-front;printf(lhe %d car leave the quenen,x.num);f=l;if(仁二0)在便道上没有找到要离开的车辆,输出数据错误printf(error!the stack and the quene have no the%d carn,x.num);)void main()停车场模拟char ch;int cord;Stack *sl,*s2;Quene *p;Stacktype x;int i=1;/clrscr();/ system(clr);s 1 =(Stack*)malloc(sizeof(Stack);s2=(Stac
14、k*)malloc(sizeof(Stack);p=(Quene*)malloc(sizeof(Quene);initstack(sl);initstack(s2);初始化停车规避所栈initquene(p);初始化便道队列doprintf( n主菜单n);printf(l进入停车场n);printf(2离开停车场n”);printf(M3 退出 n”);printf(HnM);printf(”请输入你的选择(1, 2, 3) ”); scanf(”d”,&cord);switch(cord)/*printf(what do you want to do?n);printf(input-(Ad
15、d/Del/Exit):);scanf(%c,&ch);switch (ch)*/(case 1:printf(H请输入车辆到达序号:n”); scanf(%d,&x.num);print请输入车辆到达时间:n”); scanf(%d,&x.arrtime);arrive(sl,p,x);车辆到达break;case 2:printfC*请输入车辆离开序号:n”); scanf(%d,&x.num); printf(”请输入离开时间:n”); scanf(”d”,&x.arrtime);leave(s 1 ,s2,p,x);车辆离开break;case 3:/*printf(the end!)
16、;i=0;*/exit(O);break;default:printf(输入不对,请重新输入:n); break;)while(idata);Pretraverse(t-lc);Pretraverse(t-rc);)void Inorder(BiTree t)中序遍历void Postorder(BiTree t)后序遍历 Ivoid creat(BiTree *t)char ch;/printf(”请输入数据n”);scanf(%c,&ch);if(ch=#)*l=NULL;return;else(*t=(BiTree)malloc(sizeof(struct node); (*t)-dat
17、a=ch;printf( %c 二 ch);creat(&(*t)-lc);creat(&(*t)-rc);)void main()BiTree t;systeni(nclr);int cord;doprintf(n二叉树相关操作n”);printfC1建立二叉树n”);printf(2先序遍历二叉树n”);printfC3中序遍历二叉树n);printf(H4后序遍历二叉树,统计叶子结点数n”);printfC* 5程序运行结束nu);printfCn”);printf(”请输入你的选择(1, 2, 3, 4, 5):”); scanf(%d,&cord);switch(cord)(case
18、 1:creat(&t);printf(”二叉树建立完成,请继续执行其他操作n”); (break;case 2:Pretraverse(t);printf(”先序遍历完成n”);)break;case 3:Inordcr(t);printf(”中序遍历完成n”);)break;case 4: Postorder(t);printfC*后序遍历完成n”); printf(”叶子结果数为%3d”,m);)break;case 5:printf(H二叉树程序执行完毕! n”); exit(O);)while(cordn,&G-e);输入顶点数和边数scanf(%c,&a);printf(Input
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 指导书 网络 1401 1402
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。