数据结构与算法设计(第二版)课件 第3章 栈与队列.pptx

数据结构与算法设计(第二版)课件 第3章 栈与队列.pptx

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第三章栈与队列;第二章复习;第三章栈和队列;3.1栈;;3.1.2基本操作;栈底位置可以设置在数组的任一个端点,而栈顶是随着插入和删除而变化的;

设一个位置指针top(栈顶指针)来动态地指示栈顶元素在顺序栈中的位置。;通常0下标端设为栈底,这样空栈时栈顶指针S-top?=?-1;

入栈时,栈顶指针加1,即S-top++;出栈时,栈顶指针减1,即S-top--。;⑴置栈空;⑶入栈;⑷出栈;⑸取栈顶元素;可以让多个栈共用一个足够大的连续存储空间。利用栈的动态特性使它们的存储空间互补。这就是栈的共享邻接空间;#defineMAXSIZE最大元素数

typedefstruct

{

datatypestack[MAXSIZE];

intlefttop;

intrighttop;

}dupsqstack;;charstatus;

status=’L’;

status=’R’;

在进行栈操作时,需指定栈号;

判断栈满的条件为:s-lefttop+1==s-righttop;;两个栈共享空间时初始化、进栈和出栈操作的算法:;2入栈操作;datatypepopDupStack(dupsqstack*s,charstatus)

{if(status==’L’)

if(s-lefttop0)

returnNULL;

else

return(s-stack[s-lefttop--]);

else

if(status==’R’)

{if(s-righttopMAXSIZE-1)

returnNULL;

else

return(s-stack[s-righttop++]);

}

else

returnNULL;

};3.2.3.链栈;;1intPush_LinkStack(LinkStack*S,datatypex)

2{LinkStackptrp;

3if((p=(LinkStackptr)malloc(sizeof(StackNode)))==NULL)

4return0;

5p-data=x;

6p-next=S-top;

7S-top=p;

8S-count++;

9return1;

10};1LinkStackPop_LinkStack(LinkStack*S,datatype*x)

2{

3LinkStackptrp;

4if(S-top==NULL)returnNULL;

5else

6{

7*x=(S-top)-data;

8p=S-top;

9S-top=(S-top)-next;

10free(p);

11S-count--;

12return(S-top);

13}

14};将十进制数N转换为r进制的数,其转换方法利用辗转相除法:以N=3467,r=8为例转换方法如下:

NN/8(整除)N%8(求余)

34674333低

433541

5466

606高

所以:(3467)10=(6613)8;算法思想(讨论):;#defineL10

voidconversio

文档评论(0)

balala11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档