- 10
- 0
- 约1.93万字
- 约 95页
- 2018-01-01 发布于广东
- 举报
第2章 线性表及其顺序存储 判断是否为运算符 int is_operation(char op) { switch(op) { case +: case -: case ?: case /:return 1; default:return 0; } } 返回运算符的优先级 int priority(char op) { switch(op) {case (:return 0; case +: case -:return 1; case *: case /:return 2; default: return -1; } } 两个辅助函数: 本题源程序 后缀式.c 习题: 数制转换问题 十进制n和其它进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理: n=(n div d)*d+n mod d ( 其中:div为整除运算,mod为求余运算) 例如 (1348)10=(2504)8,其运算过程如下: n n div 8 n mod 8 1348 168 4 168 21 0 21 2 5 2 0 2 倒取余数 (1348)10=(2504)8 例用栈的知识实现任意正的10进制整数到其它进位制的转换程序。 算法设计题: 2、回文是指正读和反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文,试写一个算法判定给定的字符向量是否为回文。 void conversion( ) { init(s); scanf (“%d”,n); while(n){ //余数进栈 push(s,n%8); n=n/8; } while(! Stackempty(s)) { e=pop(s); //余数出栈 printf(“%d”,e); } } 习题一解答: 2.4 队列 2.4.1 队列 队列是一种特殊的线性表,它的特殊性在于队列的插入和删除操作分别在表的两端进行。插入的那一端称为队尾,删除的那一端称为队首。队列的插入操作和删除操作也分别简称进队和出队。 对于一个队列: {k0, k1, k2, …, kn-1} 则k0是这些结点中最先插入的结点,若要做删除操作,k0将首先被删除,所以说,队列是具有“先进先出”(FIFO,First In First Out)特点的线性结构。 /?????????????????????????????????????????????????/ /? 函数功能:读栈顶(顺序存储)结点值 ?/ /? 函数参数:sequence_stack型变量st ?/ /? 函数返回值:datatype类型。返回栈顶结点值 ?/ /? 文件名:seqstack.c, 函数名:read() ?/ /?????????????????????????????????????????????????/ datatype read(sequence_stack st) { if (empty(st)) {printf(\n栈是空的!);exit(1);} else return st.a[st.top-1]; } 算法2.11 取得栈顶(顺序存储)结点值 顺序栈的进栈与出栈操作 下图表明进出栈情况。 5 4 3 2 1 0 top (a)空栈 5 4 3 2 1 0 top A (b)A进栈 5 4 3 2 1 0 -1 top A (c)B、C、D进栈 B C D top top top 5 4 3 2 1 0 A (d)D,C出栈 B C D top 5 4 3 2 1 0 (e)E进栈 A B C D top E top 5 4 3 2 1 0 A B E D top (f)E、B、A出栈 /???????????????????
您可能关注的文档
最近下载
- SY-T 5504.3-2008 油井水泥外加剂评价方法 第3部分:减阻剂.pdf VIP
- 【三年级数学】每日口算 30 天.pdf VIP
- 物资采购应急方案.docx VIP
- 餐饮服务与管中职全套完整教学课件.pptx
- 第四版国际压力性损伤溃疡预防和治疗临床指南解读PPT课件.pptx VIP
- 1209 六年级(上)英语知识点汇总(外研版).docx VIP
- ICP-MS介绍讲课课件.ppt VIP
- 6篇2025年度民主生活会“五个带头”对照检查材料(参考范文).docx VIP
- DBJT_15-138-2018_建筑电气防火检测_技术规程-全国各省建筑标准.pdf VIP
- j12ZG604-全国各省建筑标准.pdf VIP
原创力文档

文档评论(0)