《数据结构与算法》_第3章 栈和队列-PPT.pptxVIP

《数据结构与算法》_第3章 栈和队列-PPT.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

【本章重点】;【本章难点】;【本章内容】;3.1栈;栈的常用基本运算

(1)InitStack(S)栈初始化,操作结果是构造一个空栈S。

(2)SetNull(S)置空栈,栈S已存在,将栈S清为空栈。

(3)Empty(S)判断栈空,若栈S为空则返回“真”值;否则返回“假”值。

(4)Push(S,x)进栈,若栈S不满,将数据元素x插入栈顶,并返回入栈是否成功的状态信息。入栈操作会改变栈的内容。

(5)Pop(S,x)出栈,若栈S非空,删除栈顶数据元素,通过参数x带回栈顶元素,并返回出栈是否成功的状态信息。出栈操作会使栈的内容发生变化。

(6)GetTop(S,x)取栈顶元素,若栈S非空,通过参数x带回栈顶元素,并返回取栈顶元素是否成功的状态信息。该操作完成后,栈的内容不变。;栈的基本运算应用举例

【例3.1】将一个非负的十进制整数转换为其它进制数(二、八、十六进制),利用栈来实现。

voidConversion(intn,intbase)//以十进制数和基数作为参数

{ Stack*S;intbit;

InitStack(S);//建立空栈

while(n!=0)

{ Push(S,n%base);//余数入栈

n=n/base; //整除基数

}

while(!EmptyStack(S))

{ bit=Pop(S);//余数出栈

if(bit9)printf(%c,bit+55);//将余数转为字符输出

elseprintf(%c,bit+48);

}

printf(\n);

}

;栈的顺序存储结构和基本运算的实现;2、顺序栈基本运算的实现;(3)判断栈空

intEmpty(SeqStack*S)

//若栈S为空栈,返回1;否则返回0

{ if(S-Top==-1)return1;

elsereturn0;

}

(4)入栈

intPush(SeqStack*S,datatypex)

//若栈S未满,则将元素x插入栈顶,并返回1,表示入栈成功;否则返回0,表示入栈不成功

{ if(S-Top==maxsize-1)

{printf(栈上溢);

return0;

}//上溢

else

{S-data[++S-Top]=x;

return1;

}

};(5)出栈

intPop(SeqStack*S,datatypex)

//若栈不空,则删除栈顶元素,由参数x带回栈顶元素,并返回1,表示出栈成功;否则返回0,表示出栈失败

{if(Empty(S))//判断栈是否为空

{printf(栈下溢);

return0;

}//下溢

else

{x=S-data[S-Top--];

return1;

}

};(6)取栈顶元素

intGetTop(SeqStack*S,datatypex)

//若栈不空,则删除栈顶元素,由x带回栈顶元素,并返回1,表示取栈顶元素成功;否则返回0,表示取栈顶元素失败

{if(EmptyS(S))//调用算法4.3,判断栈是否为空

{printf(栈下溢);

return0;

}//下溢

else

{x=S-data[S-Top];

return1;

}

};两个顺序栈共享连续空间,降低溢出的概率;出栈操作的算法:

datatypepop(SeqStack*S,inti)

//i号栈的栈顶元素出栈

{datatypex;

if(i==1)

if(S-Top1==-1)printf(“1号栈下溢”);

else{x=S-v[S-Top1];S-Top1--;}//1号栈出栈

else

if(S-top2==maxsize)printf(“2号栈下溢”);

else{x=S-v[S-Top2];S-Top2++;}//

文档评论(0)

kd8w + 关注
实名认证
文档贡献者

kd8w

1亿VIP精品文档

相关文档