




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.3/*题目:假设表达式中允许包含三种括号,圆括号,方括号和大括号,编写一个算法判断表达式中的括号是不是匹配实践:狼影时间:2012.9.19*/# include # include # define size 256/定义节点typedef structchar exsize;int top;STACK;/函数声明STACK *init_stack(void);bool is_match(char *exp);bool pop_stack(STACK *stack, char *ch);void push_stack(STACK *stack, char e);main()char exp256;printf(输入表达式n);scanf(%s, exp);if(is_match(exp)printf(此表达式匹配n);elseprintf(此表达式不匹配n);/栈的初始化STACK *init_stack(void)STACK *stack = (STACK *)malloc(sizeof(STACK);if(NULL = stack)printf(内存分配失败n);exit(-1);stack-top = -1;return stack;/判断是不是匹配bool is_match(char *exp)int i = 0;char ch;STACK *stack;stack = init_stack();while(expi != 0)if(=expi | =expi | =expi)push_stack(stack, expi);else if()=expi | =expi | =expi)/线面是匹配的三种情况,switch(expi)case ):if(pop_stack(stack, &ch)if(ch != ()return false;elsereturn false;break;case :if(pop_stack(stack, &ch)if(ch != )return false;elsereturn false;break;case :if(pop_stack(stack, &ch)if(ch != )return false;elsereturn false;break;default:break;i+;if(-1 = stack-top)return true;elsereturn false;/入栈的操作void push_stack(STACK *stack, char e)stack-top+;stack-exstack-top = e;/出栈的操作bool pop_stack(STACK *stack, char *ch)if(-1 = stack-top)return false;else*ch = stack-exstack-top;stack-top-;return true;/*输入表达式(1+2+3*5234)此表达式匹配Press any key to continue*/3.4/*题目;设从键盘输入一整数序列,编写程序,当ai大于零时,ai进队,当ai小于零时,将对首元素出队当ai等于零时,将表示输入结束,要求用环形队列,进队与出队单独编写算法,并在异常情况下 打印出错实践:狼影时间;2012.9.20*/# include # include # define size 100typedef struct int nodesize;int front;int rear;QUEUE;/函数声明QUEUE *init_queue(void);bool en_queue(QUEUE *queue, int e);bool out_queue(QUEUE *queue);void print_queue(QUEUE *queue);main()QUEUE *queue;int arrysize;int n;int i;queue = init_queue();printf(输入数字的个数n);scanf(%d, &n);printf(请输入数据n);for(i = 0; in; i+)scanf(%d, &arryi);i = 0;while(i0)if(!en_queue(queue, arryi)printf(进队出错n);break;if(arryifront = queue-rear = -1;return queue;/进队的操作 bool en_queue(QUEUE *queue, int e) if(queue-front = (queue-rear+1)%size)return false;elsequeue-rear = (queue-rear+1)%size;queue-nodequeue-rear = e;return true; /进行出队操作 bool out_queue(QUEUE *queue) if(queue-rear = queue-front)return false;elsequeue-front = (queue-front+1)%size;return true; /打印队列void print_queue(QUEUE *queue)if(queue-front = queue-rear)printf(队列为空n);return;elsewhile(queue-front != queue-rear)queue-front = (queue-front+1)%size;printf(%d , queue-nodequeue-front);/*输入数字的个数5请输入数据1 2 3 -1 4队列内容是2 3 4Press any key to continue*/3.5/*题目:编写一个算法,将一个环形队列(容量为n,元素下标从1到n)的元素倒置(具体的图请参考课本p88)设计;狼影时间:2012.9.20*/# include # include /* 解此题的思路是 将队列中的数据先转到栈中,然后再把栈中的数据转到另一个队列中,实现倒置 对照书中给的图来初始化两个队列 图参考课本88页 也有其他简单的方法,如果你想到告诉我一声啊,共同学习吗!*/typedef structchar c20;int top;STACK;typedef structchar ch20; int rear;int front;QUEUE;/函数声明void creat_queue(QUEUE *queue);QUEUE *init_queue1(void);void traverse(QUEUE *queue1, QUEUE *queue2, STACK *stack);STACK *init_stack(void);QUEUE *init_queue2(void);void creat_queue(QUEUE *queue);void print_queue(QUEUE *queue);main()QUEUE *queue1, *queue2;STACK *stack;stack = init_stack();queue1 = init_queue1();queue2 = init_queue2();creat_queue(queue1);traverse(queue1, queue2, stack);print_queue(queue2);/初始化 队列QUEUE *init_queue1(void)QUEUE *queue = (QUEUE *)malloc(sizeof(QUEUE);if(NULL = queue)printf(内存分配错误n);exit(-1);queue-front = 8;queue-rear = 8;return queue;/栈的初始化STACK *init_stack(void)STACK *stack = (STACK *)malloc(sizeof(STACK);if(NULL = stack)printf(内存分配错误n);exit(-1);stack-top = -1;return stack;/队列的初始化QUEUE *init_queue2(void)QUEUE *queue = (QUEUE *)malloc(sizeof(QUEUE);if(NULL = queue)printf(内存分配错误n);exit(-1);queue-front = 10;queue-rear = 0;return queue;/创建队列void creat_queue(QUEUE *queue)char c;for(c = a; crear = (queue-rear)%10+1;queue-chqueue-rear = c;/数的转置void traverse(QUEUE *queue1, QUEUE *queue2, STACK *stack)queue1-front = (queue1-front)%10+1;/将队列中的数出队放到栈中while(queue1-front != queue1-rear)stack-top+;stack-cstack-top = queue1-chqueue1-front;queue1-front = (queue1-front)%10+1;stack-top+;stack-cstack-top = queue1-chqueue1-front;free(queue1);/将元素出栈,放到队列中queue2-rear = (queue2-rear)%10+1;while(stack-top != -1)queue2-chqueue2-rear = stack-cstack-top;stack-top-;queue2-rear = (queue2-rear)%10+1;/打印队列中的内容void print_queue(QUEUE *queue)queue-front = (queue-front)%10+1;while(queue-front != queue-rear)printf(%c , queue-chqueue-front);queue-front = (queue-front)%10+1;printf(n);3.6/*题目:输入n个10以内的数每输入i(0=i=9)就把它插入到第i号队列,最后把10个队中非空队列,按队列号从小到大 的顺序串接成一条链,并输出该链的所有元素设计:狼影时间:2012.9.20*/# include # include /在这里用链表的形式来创建队列typedef struct node int data;struct node *pNext;NODE;typedef structNODE *front;NODE *rear;QUEUE;/函数的声明NODE *init_link(void);QUEUE *init_queue(void);void en_queue(QUEUE *queue, int i);void print_link(NODE *pHead);void en_queue(QUEUE *queue, int i);bool is_empty(QUEUE *queue);void put_link(QUEUE *queue, NODE *pHead);main()int n, i, j;QUEUE *queue10;NODE *pHead;/初始化化链表pHead = init_link();/初始化10个队列for(j = 0; j10; j+)queuej = init_queue();/输入输入数的个数printf(请输入数的个数nn);scanf(%d, &n);printf(请输入i值(0=i=9)n);for(j = 0; jn; j+)doscanf(%d, &i);if(i=10)printf(你输入第%d个数据错误, 请重新输入n, j+1);while(i=10); /当i值满足条件时,循环结束/将i值放入相应的队列中switch(i)case 0: en_queue(queue0, i);break;case 1: en_queue(queue1, i);break;case 2: en_queue(queue2, i);break;case 3: en_queue(queue3, i);break;case 4: en_queue(queue4, i);break;case 5: en_queue(queue5, i);break;case 6: en_queue(queue6, i);break;case 7: en_queue(queue7, i);break;case 8: en_queue(queue8, i);break;case 9: en_queue(queue9, i);break;default:break;/将队列中的内容放入链表for(i = 0; ifront = (NODE *)malloc(sizeof(NODE);if(NULL = queue-front)printf(内存分配错误n);exit(-1);queue-front-pNext = NULL;queue-rear = queue-front;return queue;/链表的初始化NODE *init_link(void)NODE *pHead = (NODE *)malloc(sizeof(NODE);if(NULL = pHead)printf(内存分配错误n);exit(-1);pHead-pNext = NULL;return pHead;/进队列的操作void en_queue(QUEUE *queue, int i)NODE *pNew;pNew = (NODE *)malloc(sizeof(NODE);if(NULL = pNew)printf(内存分配错误n);exit(-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年保安员考试题库含完整答案名师系列
- 2025年小学生科学知识竞赛题库及答案
- 2025-2030啤酒行业人才缺口现状分析及产学研联合培养机制设计
- 2025-2030啤酒文化IP打造对鲜啤品牌溢价能力的影响及实施路径探析
- 2025-2030啤酒包装回收体系试点效果分析及循环经济模式推广建议
- 2025-2030咖啡连锁品牌区域扩张战略及单店盈利模型验证研究报告
- 2025-2030呼和浩特蒙餐健康化转型趋势研究
- 2025-2030含油污泥热解处理设备能效标准与行业规范研究报告
- 2025-2030合成生物学在医药与农业领域的应用前景分析报告
- 14.彩墨游戏(二)说课稿-2023-2024学年小学美术三年级下册人美版(常锐伦、欧京海)
- 三鞭温阳胶囊国家中成药标准
- 2024年兴业银行招聘笔试参考题库含答案解析
- 出差报销单-中英对照版
- 茉莉花常见病虫害及其防治
- 保洁巡查记录表
- 医院陪护投标文件方案-医院陪护方案
- 数字孪生应用技术员职业技能理论考试题库大全(含答案)
- 服装概论高职PPT完整全套教学课件
- fx plc编程口通信协议分析
- 第8课+自制信封(课件)-苏教版劳动三年级上册
- 红色文化基地课件
评论
0/150
提交评论