1 / 28
文档名称:

数据结构与算法分析-栈.ppt

格式:ppt   页数:28
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构与算法分析-栈.ppt

上传人:df158687 2015/6/2 文件大小:0 KB

下载得到文件列表

数据结构与算法分析-栈.ppt

文档介绍

文档介绍:Stacks(栈)
栈是只允许在同一端进行插入和删除运算的线性表。允许插入和删除的那一端称为栈顶,另一端为栈底。若有栈
S = (s0,s1,……sn-1)
则s0为栈底结点,sn-1为栈顶结点。
栈的结点插入为进栈
栈的结点删除为出栈
栈具有后进先出(LIFO)的特性
S0
S1
….
Sn-1
进栈
出栈
栈顶
栈底
2003-8-25
1
Lecture notes
0
1
MAXN-1
top
0
1
MAXN-1
top
(a) 栈结构示意图
(b) 栈空
(c) 栈满
2003-8-25
2
Lecture notes
Array-Based Stacks(顺序栈)
可以用顺序存储线性表来表示栈,为了指明当前执行插入和删除运算的栈顶位置,需要一个游标变量top(习惯称为栈顶指针,注意与指针变量的区别),top指出栈顶表元在数组中的下标。始终指向待插入元素的位置。
top是下一次进栈时,进栈表元要存入的数组元素下标。当栈为空时,top=0;栈满时,top=MAXN(数组元素个数),如图中的(b)和(c)。
a2
a1
a1
a2
top
2003-8-25
3
Lecture notes
进栈:
首先把进栈表元存入以top为下标的数组元素中,然后top加1,使top变为下一次进栈表元在数组中的下标。
出栈:
首先执行top减1,然后把以top为下标的栈顶表元送到接受出栈表元的变量中。同样限制在栈空时,不能再出栈;在栈满时,不能再入栈。
2003-8-25
4
Lecture notes
Array-based stack class implementation(顺序栈类的实现)
//Array-based stack class implementation
Template <class Elem> class AStack:public Stack<Elem>
{
private:
int size;//Maximum size of stack
int top;//Index for top element
//Array holding stack elements
Elem *listArray;
表示栈中的第一个空闲位置
2003-8-25
5
Lecture notes
public:
AStack(int sz=DefaultListSize)
{//Constructor
size = sz;
top = 0;
listArray = new Elem[sz];
}
//Destructor
~AStack() { delete [] listArray; }
void clear() { top = 0; }
2003-8-25
6
Lecture notes
bool push(const Elem& item)
{
if(top == size) return false;//Stack is full
else { listArray[top++] = item; }
}
bool pop(Elem& it)//Pop top element
{
if (top == 0) return false;
else { it = listArray[--top]; return true; }
}
2003-8-25
7
Lecture notes
bool topvalue(Elem& it) const
{//Return top element
if (top = 0) return false;
else
{
it = listArray[top-1];
return true;
}
}
int length() const {return top;}
};
2003-8-25
8
Lecture notes
An array-based stack storing
variable-length strings.
每个位置存储一个字符或一个整数,该整数说明栈中位于其左边的字符串长度。
‘a’
‘b’
‘c’
3
‘l’
‘h’
‘l’
‘e’
‘o’
5
0 1 2 3 4 5 6 7 8 9 10
top=10
2003-8-25
9
Lecture notes
Linked Stacks(链式栈)
即用链表来实现栈。
链表的第一个表元是栈顶结点,链表的末尾表元是栈底结点。
链表的首表元指针就是栈顶指针top,top为NULL的空链表是空栈。
x

top

最近更新

2026年刑事诉讼原理与实务模拟题100道精选答案.. 48页

2026年地方病控制题库及答案【真题汇编】 40页

2025青海海北州第二人民医院面向社会招聘不占.. 44页

基于文本引导的轻量异构编码多模态图像融合 30页

2025蒙晟建设有限公司招聘紧缺专业人员8人备考.. 47页

2026年1月广东广州市天河区荟雅苑幼儿园编外聘.. 50页

2026年c语言测考试题库(夺冠) 13页

2023年三门峡市直机关遴选公务员笔试真题汇编.. 66页

2024年保山市特岗教师招聘考试真题题库附答案.. 33页

2026年丽水学院单招职业倾向性考试模拟测试卷.. 45页

2026年企业作业人员题库100道及完整答案1套 41页

2025中国东航上海飞行部招聘历年题库附答案解.. 34页

2026年台州职业技术学院单招职业技能考试题库.. 44页

2025年小金县幼儿园教师招教考试备考题库带答.. 30页

2025年武义县幼儿园教师招教考试备考题库含答.. 31页

2026年大学商贸学院专升本C语言考试真题及答案.. 13页

2026年宿迁泽达职业技术学院单招职业技能考试.. 45页

2025绍兴科技馆招聘5人笔试备考试题附答案解析.. 36页

2026年广东省珠海市单招职业倾向性考试模拟测.. 43页

2026北京师范大学宁德实验学校招聘教师7人(福.. 52页

2026年党纪法则知识测试题一套 18页

2026年南通科技职业学院单招职业适应性考试模.. 43页

2026年清华c语言期末测试题(易错题) 13页

2026年贵州大学c语言期末试题(网校专用) 13页

2026年江西交通职业技术学院单招职业倾向性考.. 37页

2025年新疆考试录用公务员《公安专业科目》真.. 30页

2025年安徽邮电职业技术学院单招职业技能测试.. 66页

2024年南京信息职业技术学院单招职业技能测试.. 78页

CFG群桩基础土方开挖施工方案 6页

青岛一年级数学下册第第一单元测试题 3页