- 1、本文档共71页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.堆栈和队列课案
while(QueueNotEmpty(myQueue)==1 StackNotEmpty(myStack)==1) { QueueDelete(myQueue,x); StackPop(myStack,y); if(x!=y) { printf(“不是回文!”); return 0; } } printf(是回文!); return 1; } StackInitiate(qstype *s) { s-top=-1; } int StackPush (qstype *s,elemtype x) { if(s-top=MAXNUM-1) return 0; else { s-stack[++(s-top)]=x; return 1; } } int StackPop (qstype *s,elemtype *y) { *y=s-stack[(s-top)]; (s-top) --; return 1; } int StackNotEmpty (qstype *s) { if(s-top0) return 0; return 1; } QueueInitiate(qqtype *q) { q-front=0; q-rear= 0; } int QueueAppend (qqtype *q,elemtype x) { if(q-rear=MAXNUM-1) return 0; q-queue[ (q-rear) ++]=x; return 1; } int QueueDelete (qqtype *q,elemtype *x) { *x=q-queue[ (q-front) ++]; return 1; } int QueueNotEmpty (qqtype *q) { if(q-rear==q-front) return 0; return 1; } 测试结果: abcdcba 是回文! abcdefg 不是回文! 线性表、栈与队列的异同点 相同点:逻辑结构相同,都是线性的;都可以用顺序存储或链表存储;栈和队列是两种特殊的线性表,即受限的线性表(只是对插入、删除运算加以限制)。 不同点: ① 运算规则不同,线性表为随机存取,而栈是只允许在一端进行插入和删除运算,因而是后进先出表LIFO;队列是只允许在一端进行插入、另一端进行删除运算,因而是先进先出表FIFO。 ② 用途不同,线性表比较通用;堆栈用于元素的保存次序与使用顺序相反的情况;队列用于元素的保存次序与使用顺序相同的情况。 小 结 理解:队列,队头,队尾,顺序队列,链式队列。 掌握:初始化,入队,出队的算法(顺序循环队列,链式队列),队空、队满的判断。 应用:回文判断,医院就诊等。 设计一个不带头节点的,数据元素为整型的,单链表,并进行相关操作,程序思路如下: void main() { 1、单链表初始化; 2、接受命令,按照命令格式执行相关操作 命令格式如下: 命令1的格式: 1 x 这里1是命令名称,x是一个数字,表示按照头插法来插入数据x;该命令执行完毕之后 ,按照如下格式显示链表中的所有数据: x1,x2,x3,x4,…..,这里x1是头指针指向的第一个元素。 命令2的格式: 2 x 这里2是命令名称,x是一个数字,表示按照尾插法来插入数据x;该命令执行完毕之后 ,按照如下格式显示链表中的所有数据: x1,x2,x3,x4,…..,这里x1是头指针指向的第一个元素。 命令3的格式: 3 i 这里3是命令名称,i是一个数字,表示要删除的数据位置,i从0开始;该命令执行完毕之后 ,按照如下格式显示链表中的所有数据: x1,x2,x3,x4,…..,这里x1是头指针指向的第一个元素。 } * 由上述求解过程可以看出,在计算过程中是从低位到高位顺序产生八进制数的各个数位,而显示时按照我们的习惯是从高位在前,低位在后,即按从高位到低位的顺序输出, 即后计算出的(高)位数先输出,具有后进先出的特点,因此可将计算过程中得到的八进制数顺序进栈,出栈序列打印输出的就是对应的八进制数。
文档评论(0)