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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

栈的操作实验报告Word格式文档下载.docx

1、/*入栈*/void Push(SqStack *p,ElemType x) if(p-toptop=p-top+1; p-stackp-top=x; elseOverflow!n/*出栈*/ElemType Pop(SqStack *p) ElemType x; if(p-top!=0) x=p-top;以前的栈顶数据元素%d已经被删除!,p-top);top-1; return(x); printf(Underflow! return(0);/*获取栈顶元素*/ElemType GetTop(SqStack *p)/*遍历顺序栈*/void OutStack(SqStack *p) int

2、 i; printf(0)这是一个空栈! for(i=p-top;i=0;i-) printf(第%d个数据元素是:%6dn,i,p-stacki);/*置空顺序栈*/void setEmpty(SqStack *p)top= -1;/*主函数*/main() SqStack *q; int y,cord;ElemType a; do第一次使用必须初始化!n 主菜单 nn 1 初始化顺序栈 nn 2 插入一个元素 nn 3 删除栈顶元素 nn 4 取栈顶元素 nn 5 置空顺序栈 nn 6 结束程序运行 nn-n请输入您的选择( 1, 2, 3, 4, 5,6) scanf(%d,&cord)

3、; switch(cord) case 1: q=(SqStack*)malloc(sizeof(SqStack); InitStack(q); OutStack(q); break; case 2: printf(请输入要插入的数据元素:a= scanf(a); Push(q,a); case 3: Pop(q); case 4: y=GetTop(q); printf(n栈顶元素为:%dn,y); case 5: setEmpty(q);n顺序栈被置空! case 6: exit(0); while (cord=6);实验2 栈的链式表示和实现编写一个程序实现链栈的各种基本运算,并在此基础

4、上设计一个主程序,完成如下功能:(1)初始化链栈(2)链栈置空(3)入栈(4)出栈(5)取栈顶元素(6)遍历链栈链栈是没有附加头结点的运算受限的单链表。栈顶指针就是链表的头指针。(1)LinkStack结构类型的定义可以方便地在函数体中修改top指针本身(2)若要记录栈中元素个数,可将元素个数属性放在LinkStack类型中定义。(3)链栈中的结点是动态分配的,所以可以不考虑上溢。#include typedef int Elemtype;typedef struct stacknode Elemtype data; stacknode * next;StackNode;typedef str

5、uct stacknode * top; =1;printf(the maze is:=1;topi.y=0;maze10=2;/*回溯算法*/doif(topi.c=1&chtop=0;for(i=0;itop=NULL;int InitQueue(LinkQueueCar *Q) /*初始化便道*/Q-head=(QueueNode *)malloc(sizeof(QueueNode);if(Q-head!=NULL)head-next=NULL;Q-rear=Q-head;return(1);else return(-1);void PRINT(CarNode *p,int room)

6、/*打印出站车的信息*/ int A1,A2,B1,B2;n请输入离开的时间:/*:*/scanf(%d:(p-n离开车辆的车牌号为:puts(p-num);n其到达时间为: %d:;离开时间为:A1=p-A2=p-B1=p-B2=p-n应交费用为: %2.1f元,(B1-A1)*60+(B2-A2)*price);free(p);int Arrival(SeqStackCar *Enter,LinkQueueCar *W) /*车辆到达*/ CarNode *p;QueueNode *t;p=(CarNode *)malloc(sizeof(CarNode);flushall();n请输入车

7、牌号(例:陕A1234):gets(p-if(Enter-MAX) /*车场未满,车进车场*/Enter-top+;n车辆在车场第%d位置.,Enter-top);n请输入到达时间:Enter-stackEnter-top=p;else /*车场已满,车进便道*/n该车须在便道等待!t=(QueueNode *)malloc(sizeof(QueueNode);t-data=p;W-rear-next=t;rear=t; void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) /*车辆离开*/int i, room;Ca

8、rNode *p,*t;QueueNode *q;/*判断车场内是否有车*/top0) /*有车*/ while(1) /*输入离开车辆的信息*/ printf(n请输入车在车场的位置/1-%d/:room);if(roomroomtop) break;while(Enter-room) /*车辆离开*/Temp-Temp-stackTemp-top=Enter-top-;p=Enter-while(Temp-=1)top=Temp-PRINT(p,room);/*判断通道上是否有车及车站是否已满*/if(W-=W-rear)&MAX) /*便道的车辆进入车场*/ q=W-next;t=q-d

9、ata;n便道的%s号车进入车场第%d位置.,t-num,Enter-n请输入现在的时间/*:*/:(t-next=q-if(q=W-rear) W-rear=W-top=t;free(q);n便道里没有车.nn车场里没有车. /*没车*/ void List1(SeqStackCar *S) /*列表显示车场信息*/int i;if(S-0) /*判断车站内是否有车*/n车场:n 位置 到达时间 车牌号nfor(i=1;=S- %d ,i);%d ,S-stacki-puts(S-n车场里没有车void List2(LinkQueueCar *W) /*列表显示便道信息*/ QueueNod

10、e *p;p=W-if(W-rear) /*判断通道上是否有车*/n等待车辆的号码为:while(p!puts(p-data-p=p-n便道里没有车.void List(SeqStackCar S,LinkQueueCar W)int flag,tag;flag=1;while(flag)n请选择 1|2|3:n1.车场n2.便道n3.返回n scanf(tag);if(tag=1|tag=3) break;switch(tag)case 1:List1(&S); /*列表显示车场信息*/List2(&W); /*列表显示便道信息*/flag=0; 思考题:(1)读栈顶元素的算法与退栈顶元素的

11、算法有何区别(2)如果一个程序中要用到两个栈,为了不发生上溢错误,就必须给每个栈预先分配一个足够大的存储空间。若每个栈都预分配过大的存储空间,势必会造成系统空间紧张。如何解决这个问题(3)栈的两种存储结构在判别栈空与栈满时,所依据的条件有何不同(4)在程序中同时使用两个以上的栈时,使用顺序栈共享邻接空间则很难实现,能否通过链栈来方便地实现如何实现(5)简述栈和队列的共同点和不同点。它们为什么属于线性表(6)在顺序队列中,当队尾指针已经指向了队列的最后一个位置时,但事实上队列中可能还有空位置。此时若有元素入列,就会发生“假溢出”。(7)链栈只有一个top指针,对于链队列,为什么要设计一个头指针和一个尾指针(8)一个程序中如果要用到两个栈时,可通过两个栈共享一维数组来实现。即双向栈共享邻接空间。如果一个程序中要用到两个队列,能否实现如何实现假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意:不设头指针),试编写相应的队列初始化、入队列和出队列算法。(9) 设计算法实现括弧配对的检查。

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

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