栈
来源:互联网 发布:瑞士钟表行业数据2017 编辑:程序博客网 时间:2024/05/22 17:28
1.栈的定义
栈是限制仅在表的一端进行插入和删除运算的线性表又称为后进先出表(LIFO表)。插入、删除端称为栈顶,另一端称栈底。表中无元素称空栈。
2 栈的逻辑结构和存储表示
栈的逻辑结构和线性表相同。
栈的抽象数据类型有两种典型的存储表示:基于数组的存储表示和基于链表的存储表示。
(1)基于数组的存储表示实现的栈称为顺序栈,顺序栈可以采用顺序表作为其存储表示,因此,可以在顺序栈的声明中用顺序表定义它的存储空间。
(2)基于链表的存储表示实现的栈称为链式栈,链式栈可以采用单链表作为其存储表示,因此,可以在链式栈的声明中用单链表定义它的存储空间。
3.栈的基本运算有:
1) initstack(s),构造一个空栈;
2) stackempty(s),判栈空;
3) stackfull(s),判栈满;
4) push(s,x),进栈;
5) pop (s),退栈;
6) stacktop(s),取栈顶元素。
4.顺序栈的定义
栈的顺序存储结构称顺序栈。
5.栈的“上溢”和“下溢”
当栈满时,做进栈运算必定产生空间溢出,称“上溢”。 当栈空时,做退栈运算必定产生空间溢出,称“下溢”。上溢是一种错误应设法避免,下溢常用作程序控制转移的条件。
6.在顺序栈上的基本运算:
1) 置空栈。
Void initstack(seqstack *s)
{
s->top=-1;
}
2)判栈空。
int stackempty(seqstack *s)
{
return s->top==-1;
}
3)判栈满。
int stackfull(seqstack *s)
{
return s->top==stacksize-1;
}
4)进栈。
Void push(seqstack *s,datatype x)
{
if(stackfull(s))
error(“stack overflow”);
s->data[++s->top]=x;
}
5)退栈。
Datatype pop(seqstack *s)
{
if(stackempty(s))
error(“stack underflow”);
return S->data[s->top--];
}
6)取栈顶元素。
Dtatatype stacktop(seqstack *s)
{
if(stackempty(s))
error(“stack underflow”);
return S->data[s->top];
}
7.链栈的定义
栈的链式存储结构称链栈。栈顶指针是链表的头指针。
8.链栈上的基本运算:
1) 建栈。
Void initstack(linkstack *s)
{
s->top=NULL;
}
2)判栈空。
Int stackempty (linkstack *s)
{
return s->top==NULL;
}
3) 进栈。
Void push(linkstack *s,datatype x)
{
stacknode *p=(stacknode *)malloc(sizeof(stacknode));
p->data=x;
p->next=s->top;
s->top=p;
}
4) 退栈。
Datatype pop(linksatck *s)
{
datatype x;
stacknode *p=s->top;
if(stackempty(s))
error(“stack underflow”);
x=p->data;
s->top=p->next;
free(p);
return x;
}
5) 取栈顶元素。
Datatype stacktop(linkstack *s)
{
if(stackempty(s))
error(“stack is empty”);
return s->top->data;
}
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 中诚信征信闫文涛:个人征信和企业征信未来将走向融合
- bootstrap模态框跳转后 框消失了而背景存在问题的解决方法
- 包银消费金融总经理助理汤向军:消费金融行业的大数据
- 京东金融上线人工智能解决方案“京东超脑”,重庆市建立国际大数据产业学院 | 大数据24小时
- angular表情过滤
- 栈
- Python JSON
- leetcode16. 3Sum Closest
- Oracle中MERGE用法
- Python map() 函数
- C++ boost环境配置
- Java(其实是计算机系统的通病,而不单单是Java的问题,C、C++等任何语言都有这个问题)关于小数的运算结果,不正确不精确,原因剖析,及解决办法
- 获取file图片路径
- 技术服务支持