




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
姓名:吴振国 学号:06 上机实验三题目一:一、 程序流程说明(1)创建一个链栈,(2)编写输出,进栈出站函数,(3)编写主函数二、程序代码#include#include#define LEN sizeof(node_type)typedef struct node int data; struct node *next;node_type;typedef struct node_type *top;int length;lstack_type;lstack_type *create_list(void) lstack_type *p; p=(lstack_type *)malloc(sizeof(lstack_type); p-top=NULL; p-length=0; return(p);void print(node_type *head) node_type *p; printf(Now ,those records are:n); p=head; if(head!=NULL) do printf(%4d,p-data); p=p-next; while(p!=NULL); int push(lstack_type *lp, int x) node_type *p; p=(node_type *)malloc(LEN); if(p!=NULL) p-data = x; p-next = lp-top;lp- top = p; lp-length+; return(1); else return(0); int pop(lstack_type *lp)node_type *p; int x;if(lp-top=NULL)printf(stack is underflow);return(0); elsex = lp-top-data;p = lp-top;lp-top = lp-top-next;lp-length-;free(p);return(true); void main() lstack_type *p1; int a=0,b=0,m=0; p1=create_list(); printf(n input the numbers:n); scanf(%d,&m); while(m!=0) push(p1,m); scanf(%d,&m); print(p1-top); pop(p1); pop(p1); print(p1-top);三:典型测试数据(输入):2 4 6 9 43 应输出(上机前自己分析的结果):43 9 6 4 2出栈后6 4 2四:上机时遇到的问题: 不能输出 解决办法:更改函数返回类型 编译出错 解决办法:输入数据时“&”不要忘五:实际运行结果 六 、小结&体会 链栈的使用很方便,比顺序栈更好操作。题目二:一、程序流程说明(1)创建一个循环队列(2)编写出队列函数,入队列函数,和负数删除函数(3)编写主函数二、程序代码#include#define N 20typedef struct int dataN; int front, rear;queue_type;void create_list(queue_type *lp) int i, elem; lp-front=0;lp-rear=0; printf(n please input datas of the listn); lp-data0=NULL ; for(i=1; idatai=elem; lp-rear+; void printlist(queue_type *lp) int i,j=0; printf(nThese records are:n); if(lp-rearfront+1; irear; i+) printf( %4d , lp-datai); void enqueue(queue_type *q, int x) q-rear=(q-rear+1)%N; q-dataq-rear=x; int dequeue(queue_type *q)int i;i=q-front; q-front=(q-front+1)%N;/* printlist(q);*/ return (q-datai+1);void aa(queue_type *lp) int i,l=lp-rear,j;printf(long=%4d,lp-rear);for(i=lp-datalp-front+1;i0)enqueue(lp,j); main() queue_type p; create_list(&p); printlist(&p); aa(&p); printf(after deletete list is:n); printlist(&p);三、测试数据* 输入:2 3 -4 6 -5 8 -9 7 -10 20 (-1)应输出:2 3 6 8 7 20四:上机时遇到的问题:负数不能完全删除 解决办法:更改循环,使每一个数都能与0比较,是负数则删除(调用出队列函数)五、实际运行结果: 六 、小结&体会 循环队列的使用能是空间更加合理的被利用。题目三:一、 程序流程说明(1)编写两个pop函数,两个pus函数 (2)编写主函数二、程序代码#include#define M 10#define true 1#define false 0typedef struct int dataM; int top1,top2;stack_type;int push1(stack_type *s)int x;printf(请输入数据(以0结束):n);scanf(%d,&x);while(x!=0&s-top1top2) s-datas-top1 = x; s-top1 = s-top1+1; scanf(%d,&x); if(s-top1=s-top2) printf(栈已满!n); return;int push2(stack_type *s)int x;printf(请输入数据(以0结束):n);scanf(%d,&x);while(x!=0&s-top1top2) s-datas-top2 = x; s-top2= s-top2-1; scanf(%d,&x); if(s-top1=s-top2) printf(栈已满!n); return;int pop1(stack_type *s)int out;if(s-top1 datas-top1-1; s-top1 = s-top1-1; return(out); int pop2(stack_type *s)int out;if(s-top2 =M) return(false);else out = s-datas-top2+1; s-top2= s-top2+1; return(out); void main()int i,j,k; stack_type as,*lp;lp=&as;lp-top1=0;lp-top2=M-1;while(1) printf(请选择你要操作的栈:输入“1”或“2”n); printf(返回“0”n); scanf(%d,&i); if(i=1) printf(请选择你要进行的操作:入栈“1”;出栈“2”n); scanf(%d,&k); switch(k) case 1:push1(lp); break; case 2:j=pop1(lp); printf(出栈元素为:%dn,j); break; default:printf(输入错误!n); else if(i=2) printf(请选择你要进行的操作:入栈“1”;出栈“2”n); scanf(%d,&k); switch(k) case 1:push2(lp); break; case 2:j=pop2(lp); printf(出栈元素为:%dn,j); break; default:printf(输入错误!n); else break; 三、测试数据*输入: 1 2 3 4 5/1 2 3 4输出:5(堆栈1出栈)/4(堆栈2出栈)四:上机时遇到的问题:函数调用后无正确输出,解决办法:正确使用switch语句,检验逻辑。 五:实际结果 六 、小结&体会 同一个结构中不同链栈需要分别操作。题目四:一、 程序流程说明(1)创建队列(2)编写输出函数,出队列,入队列函数(3)编写主函数二、程序代码#include#define N 20typedef struct int dataN; int top1, top2;queue_type;void create_list(queue_type *lp) int i, elem; lp-top1=0;lp-top2=-1; printf(n please input datas of the listn); for(i=0; idatai=elem; lp-top2+; void printlist(queue_type *lp) int i,j=0; printf(nThese records are:n); if(lp-top2top2lp-top1) for(i=lp-top1; itop2; i+) printf( %4d , lp-datai); else for(i=lp-top1; idatai); for(i=0;itop2;i+)printf( %4d , lp-datai); void enqueue(queue_type *lq, int x) int tag;if( (lq-top2+1)%lq-top1!=0 )tag=1;if(tag) lq-top2=(lq-top2+1)%N; lq-datalq-top2=x; int dequeue(queue_type *q)int i;i=q-top1; q-top1=(q-top1+1)%N;/* printlist(q);*/ return (q-datai);main() int i;queue_type p;create_list(&p);printlist(&p);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区物业安全知识培训课件
- 统编版五年级语文上册第一单元拔尖测评卷(含答案)
- 北师大版五年级上册数学期末检测题(无答案)
- 荔湾电梯销售合同范本
- 浙江郊区厂房合同范本
- 猎头招聘合同范本
- 建大棚质保合同范本
- 鸡粪采购合同范本
- 餐饮员工聘用合同范本
- 正规租房和合同范本
- 药品经营企业讲课课件
- 大便常规检查
- 广东省深圳市海韵中学2026届中考押题语文预测卷含解析
- 2025年综合类-公务员-事业单位历年真题摘选带答案(5卷单选100题合辑)
- 园区物业服务管理办法
- 护理盆腔囊肿疑难病例讨论
- 2025年贵州省中考英语真题含答案
- 陶瓷功能检测培训
- 社矫业务培训课件
- 2025至2030中国锅炉行业市场深度调研报告
- 消除医疗歧视培训
评论
0/150
提交评论