数据结构
sky_caicai
一步一重天
展开
-
递归的应用——八皇后问题
回朔算法的基本思想 ·从问题的某一种状态出发,搜索可以到达的状态 ·当某个状态到达后,可向前回退,并继续搜索其他可达状态 ·当所有状态都到达后,回朔算法结束 程序设计中可以利用函数的活动对象保存回朔算法的状态数据,因此可以利用递归完成回朔算法。 八皇后算法 1 初始化 I = 1 2 初始化 J = 1 3 从第i行开始,恢复j的当前值,判断第j个位置 A`原创 2015-06-20 23:10:59 · 669 阅读 · 1 评论 -
队列的定义
队列:是一种特殊的线性表 队列仅在线性表的两端进行操作: 队头:取出数据元素的一端 队尾:插入数据元素的一端 队列性质:先进先出(FIFO) 队列的实现之顺序存储 代码复用线性表的顺序存储 #include "SeqList.h" #include "SeqQueue.h" SeqQueue* SeqQueue_Create(int capac原创 2015-06-28 00:26:33 · 1358 阅读 · 0 评论 -
栈的实现
栈的定义: 栈是一种特殊的线性表 栈仅能在线性表的一端进行操作 栈顶:允许操作的一端 栈底:不允许操作的一端 栈的性质: LIFO 后进先出原则 链式栈 linkStack.h #ifndef _LINKSTACK_H_ #define _LINKSTACK_H_ typedef void LinkStack; //给void 起一原创 2015-06-07 10:44:17 · 621 阅读 · 0 评论 -
栈的应用---编译器的符号匹配
算法 1 从第一个字符开始扫描 2 当遇见普通字符时候忽略,遇见做字符压入栈。 3 当遇见右符号时候从栈中弹出栈顶符号 匹配成功,继续读入下一字符 匹配失败,立即停止并报错 成功:所有字符扫描完毕,且栈为空 失败:匹配失败或者所有字符扫描完毕但栈不是空的。 伪代码: int scanner(const char* code) { 创建栈;原创 2015-06-08 00:36:44 · 1105 阅读 · 0 评论 -
栈的应用---中缀变后缀
中缀表达式 运算符号在数字中间 后缀表达式 运算符号在数字之后 计算机计算计算的是后缀表达式 中缀变后缀举例 5 + 3 -> 5 3 + 1 + 2 * 3 -> 1 2 3 * + 9 + (3 - 1) * 5 -> 9 3 1 - 5 * + 中缀变后缀算法 ···遍历中缀表达式中的数字和符号 ·········对于数字:直接输出 ··原创 2015-06-08 16:27:36 · 625 阅读 · 0 评论 -
栈的应用---后缀运算法则
·对于数字:进栈 ·对于符号: ·从栈中弹出右操作数 ·从栈中弹出左操作数 ·根据符号进行运算 ·将运算结果压入栈中 ·遍历结果:栈中唯一的数字为结果 伪算法 int compute (const char * exp) { 创建栈 int i = 0; While (exp[i] != ‘\0’) { if(数字) 输出 Els原创 2015-06-11 23:05:28 · 841 阅读 · 0 评论 -
递归
程序中的函数调用栈是栈数据结构的一种应用 函数调用栈一般是从高地址向低地址增长 ·栈顶为内存的低地址 ·栈底为内存的高地址 函数调用栈中的存储数据为活动记录 活动记录:函数调用时一系列相关记录 程序栈空间: ·本质上是顺序栈 ·程序栈空间访问是通过函数调用进行的 ·程序原创 2015-06-15 23:18:30 · 866 阅读 · 0 评论