




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验二 栈(队列)的创建与应用#include #include #define MaxSize 100#define MaxOp 7struct char ch; /运算符int pri; /优先级 lpri=,0,(,1,*,2,/,2,+,3,-,3,),6, rpri=,0,(,6,*,4,/,4,+,2,-,2,),1;int leftpri(char op) /求左运算符op的优先级int i;for (i=0;iMaxOp;i+)if (lprii.ch=op) return lprii.pri;int rightpri(char op) /求右运算符op的优先级int i;for (i=0;iMaxOp;i+)if (rprii.ch=op) return rprii.pri;int InOp(char ch) /判断ch是否为运算符if (ch=( | ch=) | ch=+ | ch=- | ch=* | ch=/)return 1;elsereturn 0;int Precede(char op1,char op2) /op1和op2运算符优先级的比较结果if (leftpri(op1)=rightpri(op2)return 0;else if (leftpri(op1)=0 & *exp=0 & *postexp=9) /判定为数字字符d=10*d+*postexp-0; postexp+;st.top+;st.datast.top=d;break;postexp+;/继续处理其他字符return(st.datast.top);void main() char exp=(26-20)/(4+2);char postexpMaxSize;trans(exp,postexp);printf(中缀表达式:%sn,exp);printf(后缀表达式:%sn,postexp);printf(表达式的值:%gn,compvalue(postexp);printf(操作成功n);#include #include typedef char ElemType;typedef struct linknodeElemType data;/数据域struct linknode *next;/指针域 LiStack;/链栈类型定义void InitStack(LiStack *&s)s=(LiStack *)malloc(sizeof(LiStack);s-next=NULL;void ClearStack(LiStack *&s)LiStack *p=s-next;while (p!=NULL)free(s);s=p;p=p-next;free(s);/s指向尾结点,释放其空间int StackLength(LiStack *s)int i=0;LiStack *p;p=s-next;while (p!=NULL)i+;p=p-next;return(i);int StackEmpty(LiStack *s)return(s-next=NULL);void Push(LiStack *&s,ElemType e)LiStack *p;p=(LiStack *)malloc(sizeof(LiStack);p-data=e;p-next=s-next;/插入*p结点作为第一个数据结点s-next=p;int Pop(LiStack *&s,ElemType &e)LiStack *p;if (s-next=NULL)/栈空的情况return 0;p=s-next;/p指向第一个数据结点e=p-data;s-next=p-next;free(p);return 1;int GetTop(LiStack *s,ElemType &e)if (s-next=NULL)/栈空的情况return 0;e=s-next-data;return 1;void DispStack(LiStack *s)LiStack *p=s-next;while (p!=NULL)printf(%c ,p-data);p=p-next;printf(n);#include #define MaxSize 100#define M 8#define N 8int mgM+2N+2=1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1,1,0,0,1,0,0,0,1,0,1,1,0,0,0,0,1,1,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,0,0,1,0,0,0,0,1,1,0,1,0,0,0,1,0,0,1,1,0,1,1,1,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1;int mgpath(int xi,int yi,int xe,int ye)/求解路径为:(xi,yi)-(xe,ye)struct int i;/当前方块的行号int j;/当前方块的列号int di;/di是下一可走方位的方位号 stMaxSize;/定义栈int top=-1;/初始化栈指针int i,j,k,di,find;top+; /初始方块进栈sttop.i=xi;sttop.j=yi;sttop.di=-1;mg11=-1; while (top-1)/栈不空时循环i=sttop.i;j=sttop.j;di=sttop.di; /取栈顶方块if (i=xe & j=ye)/找到了出口,输出路径 printf(迷宫路径如下:n);for (k=0;k=top;k+)printf(t(%d,%d),stk.i,stk.j);if (k+1)%5=0)/每输出每5个方块后换一行printf(n); printf(n);return(1);/找到一条路径后返回1find=0;while (di4 & find=0)/找下一个可走方块di+;switch(di)case 0:i=sttop.i-1;j=sttop.j;break;case 1:i=sttop.i;j=sttop.j+1;break;case 2:i=sttop.i+1;j=sttop.j;break;case 3:i=sttop.i,j=sttop.j-1;break;if (mgij=0) find=1;/找到下一个可走相邻方块if (find=1)/找到了下一个可走方块sttop.di=di;/修改原栈顶元素的di值top+;/下一个可走方块进栈sttop.i=i;sttop.j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代餐饮店铺转让合同含环保设施及节能技术
- 海外社交媒体跨境电商品牌合作推广协议
- 智能制造基地厂房股权转让合作协议
- 水上救援专用船租赁服务协议
- 高端制造基地厂房租赁代购及产业导入合同
- 场地及综合体大楼公共设施装修工程协议
- 2025茶叶销售代理合同全新版
- 2025合同范本物业管理服务合同 示例
- 2025合作合同书 共同经营协议
- 离散数学试题及答案文库
- GB/T 21709.8-2008针灸技术操作规范第8部分:皮内针
- GA/T 954-2011法庭科学工具痕迹中凹陷痕迹的检验规范
- GA/T 497-2016道路车辆智能监测记录系统通用技术条件
- 第六章恶意代码分析与防范培训课件
- 净化工程施工组织设计方案方案
- CNAS实验室评审不符合项整改报告
- PDCA降低I类切口感染发生率
- 行车日常维护保养点检记录表
- 幼儿园《开关门要小心》
- 多彩的黄土高原论文自然环境
- TwinCAT PLC 编程手册
评论
0/150
提交评论