C堆栈
C堆栈实现的表达式求值
//Luangeng #include<stdio.h> #include<conio.h> #include<windows.h> #define SIZE 100 char t[10][14]={0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,1,0,1,1,1,0,1,1,1,1,1,0, 0,1,1,1,1,0,1,1,1,0,1,0,1,0, 0,0,0,1,0,0,1,0,1,0,0,1,1,0, 0,1,1,1,1,1,0,1,0,1,1,0,1,0, 0,1,0,1,0,1,0,1,1,1,0,1,0,0, 0,1,1,0,1,0,1,0,0,1,1,0,1,0, 0,1,0,1,1,1,0,1,1,1,1,1,0,0, 0,1,1,1,0,1,1,1,0,1,0,1,1,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0}; typedef struct { short x,y; short d; } step; typedef struct { step *top,*base; } stack; void gotoxy(int x,int y) { COORD cd; cd.X = x; cd.Y = y; HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hout,cd); } void creat(stack *s) { s->base=(step *)malloc(SIZE*sizeof(step)); s->top=s->base; if(!s->base) printf("failed !\n"); } void push(stack *s,short a,short b,short c) { if(s->top>=(s->base+SIZE)) printf("stack full !.........."); else { s->top++; s->top->x=a; s->top->y=b; s->top->d=c; gotoxy(b,a); printf("%c",1); } } void pop(stack *s) { if(s->base==s->top) printf("\nunderflow....\n"); else { gotoxy(s->top->y,s->top->x); printf(" "); s->top--; } } int main() { stack path; short i,j,k; creat(&path); for(i=1;i<=10;i++) for(j=1;j<=14;j++) { gotoxy(j,i); if(t[i-1][j-1]==0) printf("%s","#"); else printf(" "); } k=1; push(&path,2,2,4); t[1][1]=-1; while(!(path.top->x==9&&path.top->y==13)) { switch(path.top->d) { case 4: path.top->d--; if(t[path.top->x-2][path.top->y-1]==1) { t[path.top->x-2][path.top->y-1]=-1; push(&path,path.top->x-1,path.top->y,4); k++; } break; case 3: path.top->d--; if(t[path.top->x-1][path.top->y]==1) { t[path.top->x-1][path.top->y]=-1; push(&path,path.top->x,path.top->y+1,4); k++; } break; case 2: path.top->d--; if(t[path.top->x][path.top->y-1]==1) { t[path.top->x][path.top->y-1]=-1; push(&path,path.top->x+1,path.top->y,4); k++; } break; case 1: path.top->d--; if(t[path.top->x-1][path.top->y-2]==1) { t[path.top->x-1][path.top->y-2]=-1; push(&path,path.top->x,path.top->y-1,4); k++; } break; case 0: pop(&path); k--; break; } if(path.top==path.base) { gotoxy(17,1); printf("No way out !!"); break; } sleep(5); gotoxy(17,10); printf("step=%d; ",k); } system("pause"); }
C堆栈的更多相关文章
- 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
- History API与浏览器历史堆栈管理
移动端开发在某些场景中有着特殊需求,如为了提高用户体验和加快响应速度,常常在部分工程采用SPA架构.传统的单页应用基于url的hash值进行路由,这种实现不存在兼容性问题,但是缺点也有--针对不支持o ...
- JVM学习(2)——技术文章里常说的堆,栈,堆栈到底是什么,从os的角度总结
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 堆栈是栈 JVM栈和本地方法栈划分 Java中的堆,栈和c/c++中的堆,栈 数据结构层面的堆,栈 os层面 ...
- arcgis engine 中出现的内存堆栈溢出问题。
两种解决方案: 1.循环加载mxd文档的时候出现的堆栈溢出,解决办法是每次循环结束时清空FeatureLayer,感觉并不好,但是确实可以实现功能. 2.循环调取featureclass的search ...
- java 堆栈 理解
Java 中的堆和栈 堆和栈:分为数据结构的堆和栈以及内存中的堆和栈,两种理解应区分开. 数据结构中的堆: 堆实际上指的就是(满足堆性质的)优先队列的一种数据结构,第1个元素有最高的优先权. 堆性质: ...
- python列表模拟堆栈和队列
对列特点:先进先出.后进后出 用列表insert.pop模拟进队出队: >>> l = [] >>> l.insert(0,'p1') >>> l ...
- GDB调试汇编堆栈过程分析
GDB调试汇编堆栈过程分析 分析过程 这是我的C源文件:click here 使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb ...
- 20145212——GDB调试汇编堆栈过程分析
GDB调试汇编堆栈过程分析 测试代码 #include <stdio.h> short val = 1; int vv = 2; int g(int xxx) { return xxx + ...
- C和指针 第十七章 经典数据类型 堆栈 队列 二叉树
堆栈: // // Created by mao on 16-9-16. // #ifndef UNTITLED_STACK_H #define UNTITLED_STACK_H #define TR ...
- gdb调试汇编堆栈过程的学习
gdb调试汇编堆栈过程的学习 以下为C源文件 使用gcc - g code.c -o code -m32指令在64位的机器上产生32位汇编,然后使用gdb example指令进入gdb调试器: 进入之 ...
随机推荐
- Linux 远程和本地的一些解决方案
有的小伙伴想Linux 远程登录 两台机器同时root登录,其实可以同时多个用户的. Linux是多用户的多任务系统,可以同时多个用户登录到系统,也可以一个用户通过不同终端登录到一个系统执行不同的操 ...
- paper 5:支持向量机系列二: Support Vector —— 介绍支持向量机目标函数的 dual 优化推导,并得出“支持向量”的概念。
paper 4中介绍了支持向量机,结果说到 Maximum Margin Classifier ,到最后都没有说“支持向量”到底是什么东西.不妨回忆一下上次最后一张图: 可以看到两个支撑着中间的 ga ...
- js 默认选中select 选项
<select id="HDname" style="width: 150px;"><option value="0"&g ...
- PAT乙级 1030. 完美数列(25)
1030. 完美数列(25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 给定一个正整数数列,和正整数p,设这 ...
- HTML5,超级链接
<a href="http://h123.date">预算控制系统</a><<br><a href="2.html&quo ...
- divcss5布局
一.ie9不支持line-height字体垂直居中兼容问题 原因:CSS中使用了中文字体,而中文字体使用汉字.如:font-family:"微软雅黑" 1.将中文字体汉字 ...
- Java总结第一次//有些图片未显示,文章包含基础java语言及各种语句
一.java入门 1.Java入门学习框架: 2.常用的DOS命令: dir(directory) : 列出当前目录下的文件以及文件夹 md(make directory) : 创建目录 r ...
- css经典布局学习
. 布局 布局是css的重头戏,每个系统的布局都有其各自的特点.无好无坏,肯定是各有优缺点,不妨拿出几个比较典型的例子来一起分析一下.例如: 经典三列布局 Bootstrap栅格布局 百度首页布局 微 ...
- python DB.fetchall()--获取数据库所有记录列表
查询到的数据格式为列表: 多个元素的列表:
- JS和CSS的多浏览器兼容(1)
1.指定文件在IE浏览器中的兼容性模式 要为你的网页指定文件模式,需要在你的网页中使用meta元素放入X-UA-Compatible http-equiv 标头.以下是指定为Emulate IE7 m ...