数据结构 C语言版 第2版 李云清 杨庆红 揭安全 第02章_线性表(I)新.pptVIP

  • 10
  • 0
  • 约1.93万字
  • 约 95页
  • 2018-01-01 发布于广东
  • 举报

数据结构 C语言版 第2版 李云清 杨庆红 揭安全 第02章_线性表(I)新.ppt

第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出栈 /???????????????????

文档评论(0)

1亿VIP精品文档

相关文档