数据结构入门学习系列-8(栈的经典算法用例)
2017-11-03 15:14
309 查看
栈的经典使用:
1.进制转换
十进制向其他进制转换,涉及到一个基本算法,除模取余。及如下图所示:
假如从十进制n向八进制o转换:
n n(div)8 n(mod)8
964 120 4
120 15 0
15 8 7
1 0 1
即964(n)=1704(o)
简单算法如下:
括号的匹配算法也是栈结构的经典实用例子,基本思想就是设置一个栈,读取括号,如果是左括号,就进栈;如果是右括号就将栈顶的左括号出栈。直到读完所有括号,栈中的存储为空。那么括号就是严格匹配的。
具体算法如下:
学程序的一定听过递归这种算法,核心思想就是利用栈的结构。层层解析入栈,然后层层运算出栈。
递归:一个函数直接或者间接调用自己本身。必须有递归规则,必须有退出条件。
例如求n的阶乘:
可以理解为从n到0一层层入栈,然后将计算后的值层层出栈。具体算法如下:
1.进制转换
十进制向其他进制转换,涉及到一个基本算法,除模取余。及如下图所示:
假如从十进制n向八进制o转换:
n n(div)8 n(mod)8
964 120 4
120 15 0
15 8 7
1 0 1
即964(n)=1704(o)
简单算法如下:
//进制转换算法 void Conversion(int n, int d) { Stack_Node *s; int k, *e; s = Init_Stack(); while(n>0) {//循环取模 k = n%d; push(s,k);//入栈 n = n/d; } while(s->top != NULL) { pop(s,*e);//出栈操作 printf("%1d",*e); } }2.括号匹配问题
括号的匹配算法也是栈结构的经典实用例子,基本思想就是设置一个栈,读取括号,如果是左括号,就进栈;如果是右括号就将栈顶的左括号出栈。直到读完所有括号,栈中的存储为空。那么括号就是严格匹配的。
具体算法如下:
//括号匹配问题 #define FALSE -1 #define TRUE 0 SqStack s; s = Init_Stack(); int Match_Brackets() { char ch, sh; scanf("%c",&ch); while(int(ch)!=13) { if(ch = '(' || ch = '[') { push(s,ch); } else if(ch = ')') { x = pop(s); if(x != '(') { printf("不匹配!"); return FALSE; } } else if(ch = ']') { x = pop(s);\ if(x!='[') { printf("不匹配!"); return FALSE; } } } if(s.top != NULL) { printf("不匹配!"); return FALSE; } return TRUE; }3.栈的经典使用之递归算法
学程序的一定听过递归这种算法,核心思想就是利用栈的结构。层层解析入栈,然后层层运算出栈。
递归:一个函数直接或者间接调用自己本身。必须有递归规则,必须有退出条件。
例如求n的阶乘:
可以理解为从n到0一层层入栈,然后将计算后的值层层出栈。具体算法如下:
//n的阶乘 int Fact(int n) { if(n==0) return n; if(n>0) return n*Fact(n-1); }
相关文章推荐
- [个人记录]小白书学习第6章数据结构基础算法竞赛入门经典第一版)
- 数据结构入门学习系列-5(链表的基本操作算法)
- 【算法竞赛入门经典第二版学习】第三章习题
- C#数据结构和算法学习系列六----堆栈、堆栈的实现和应用
- 数据结构和算法学习系列之最大子序列求和问题的O(N)时间复杂度
- C#数据结构和算法学习系列十一----构建字典DictionaryBase 类和SortedList 类
- 数据结构经典算法学习之八皇后01
- C#数据结构和算法学习系列五----基础查找算法
- C#数据结构和算法学习系列九----String类和StringBuilder类
- 【从零学习经典算法系列】分治策略实例——二分查找
- 【从零学习经典算法系列】分治策略实例——快速排序(QuickSort)
- 关于算法竞赛入门经典一书的思考学习——枚举排序和子集生成!
- 【算法竞赛入门经典学习日记】第二章 循环结构程序设计
- ps入门经典教程系列----------------学习ps第一天
- 数据结构与算法学习-哈希表入门
- C#数据结构和算法学习系列十三----链表
- 数据结构和算法学习系列之快速排序的Partition函数一种实现方法
- theano学习入门和进阶系列1: 基础数据结构和语法
- 经典高斯算法,一起学习数据结构和算法吧!
- 数据结构经典算法学习之老鼠走迷宫02