- 1、本文档共53页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
常用数据结构及其运算;§3.1 概述
§3.2 线性表
§3.3 栈与队
§3.4 树与二叉树
§3.5 图
§3.6 查找与排序;3.3 栈与队;3.3.1 栈的结构和运算;3.3.1 栈的结构和运算;顺序栈
? 用向量作为存储结构,可用一维数组s[1:m] 表示。
m-栈的最大容量。
Top-栈顶指示器。top=0,栈空;top=m,栈满。;顺序栈(C++描述);(1)进栈操作
若栈不满,则在栈顶插入元素x作为新的栈顶。
void SqStack::Push(ElemType x)
{
if( top stacksize-1)
{
top++;
data[top]=x;
}
else cout”栈满”;
}
;(2)出栈操作
若栈不空,则删除栈顶元素,用result返回其值。
void SqStack::Pop(ElemType result)
{
if(top -1)
{
result= data[top];
top--;
}
else cout栈空;
};(3)取栈顶元素
若栈不空,则用result返回栈顶元素。
void SqStack::GetTop(ElemType result )
{
if(top -1) {
result= data[top];
}
else cout栈空;
}
;链栈
? 链栈是用链表作为栈的存储结构,top为栈顶指 针,指示栈顶元素位置,若top=NULL,则表示栈 空。链栈一般不会出现上溢,除非内存中已不 存在可用空间。;? 链栈的插入(进栈):;链式栈(C++描述) ;(1)进栈操作
若栈不满,则在栈顶插入元素x作为新的栈顶。
void LinkStack::Push(ElemType x)
{
SNode *p=new SNode;
if(p!=NULL) {
p-data=x;
p-next=top;
top=p;
}
};(2)出栈操作
若栈不空,则删除栈顶元素,用result返回其值。
void LinkStack::Pop(ElemType result);
{
SNode *p;
if(top!=NULL){
result = top-data;
p=top;
top=top-next;
delete p;
}
};4. 栈的应用
(1) 表达式求值(用于高级语言的编译程序)
?运算符:** / * + - ;
优先数:3 2 2 1 1 0; 需建立两个栈:操作数(NS)、运算符(OS)。
? 算法思想:置NS为空, “; ”作为OS的栈底元素。自左至右扫描表达式:
① 若为操作数,将其压入NS栈
② 若为运算符,与OS栈顶元素比较优先级:
OS栈顶,则将当前运算符压入OS栈。
= OS栈顶,则从NS栈中弹出两个操作数x、y,再从OS栈中弹出一个运算符θ,构成一条机器指令:xθy→T??将结果T送入NS栈。
= “;”,且OS栈顶也为“;”,则表示表达式处理结束,此时NS栈顶的元素即为此表达式的值。;? 举例:设表达式为:A / B ** C + D; 过程为:; ? 过程嵌套--多重嵌套时,用栈将各层断点信息依次入栈,当各层子过程返回时,以相反的次序从栈顶取出(FILO, or, LIFO); ? 递归调用--一个过程通过过程调用语句 直接或间接地调用自己的过程。;(3) 回溯求解算法;4)算法描述Pack(T,n,W,S,top){ top=0; i=1; //初始化 while (T0 i=n)
{ if (T-W[i]==0||(T-W[i]0in))
{ top++; S[top]=i; T=T-W[i]; } //可选
if (T==0) return(1); //有解 else
{ if (i==ntop0){ i=S[top]; top--; T+=W[i]; }//退栈
i++; //取下一个
} }//end while return(0);};4 7 3 5 4 2; N=( N div d)*d+N mod d ; div为整除运算 ,mod为求余
(1344)10=(2504)8
N N div 8 N
您可能关注的文档
- 第九课征税与纳税[课堂练习].doc
- 第九与第十三章其他税种纳税申报与纳税审核代理实务.doc
- 第二专题 从师夷长技到初试共与.ppt
- 第九章 房产税、城镇土地使用税与耕地占用税法.doc
- 第九章 房产税法、城镇土地使用税法与耕地占用税法(完整版).doc
- 第六单元3、11~20各数写法(第46课时).doc
- 第六单元测试卷与答案 文档.doc
- 第六-七课:大一统中央集权国家形成与秦末农民战争-2013年修改次稿.ppt
- 第六章数据分析教案.doc
- 第七章 南宋中期诗歌与陆游(板书).doc
- 资源型城市绿色转型发展中的绿色金融产品创新与风险管理报告.docx
- 2025年新能源汽车充电站布局优化与充电设备技术创新趋势研究.docx
- 2025至2030中国房地产金融行业市场发展现状及商业模式与投资发展报告.docx
- 2025年园艺花卉跨境电商冷链物流技术绿色物流技术创新趋势报告.docx
- 2025年园艺花卉跨境电商冷链物流技术合作创新策略研究.docx
- 2025年口腔医疗服务市场扩张驱动因素与竞争格局研究报告.docx
- 智慧农业大数据平台助力农业产业升级研究报告.docx
- 2025年智能仓储物流系统智能化升级项目风险管理报告.docx
- 2025年海上风电场建设与风能资源评估与产业链分析报告.docx
- 金融租赁公司业务模式创新与风险控制:2025年行业趋势分析与策略建议.docx
文档评论(0)