数据结构_知识点_栈

1. 栈的定义

只允许在一段进行插入和删除操作的线性表。
可以理解为只有一个口的窄瓶子,出入都只能通过一个口。同时,瓶内elem按线性排列。
由特性可知,其输入与输出顺序可以有多种不同的变化。因而,栈多用于需要输出顺序特殊的临时存放。

顺序栈

typedef struct
{
    elemType data[maxSize];
    int top;
} SqStack;

顺序栈,是基于顺序线性表实现的,在c语言中通过创建数组,以及定义栈顶的指针(栈底的指针就默认为数组的为0的下标)。通过移动栈顶指针top,进行压栈,出栈的操作。
当栈为空时,top 为 -1。

链栈

typedef struct Node
{
    elemType data;
    Node *next; 
};

typedef Node *stack;

链栈一般使用没有头结点的栈表实现。
没有使用头结点的好处是,把链栈的第一个结点作为栈顶,stack作为结点指针直接执行第一个结点,就能进行所有操作,而不用通过stack找到指向第一个结点的指针。

共享栈

两个栈使用同一个顺序栈
一个把0为下标的元素作为栈底,压栈时栈顶指针 + 1
一个把maxSiza为下标的元素作为栈底,压栈时栈顶指针 - 1
当栈满时,两个栈顶指针相差1

typedef struct
{
    elemType data[maxSize];
    int top1,top2;
}stack;

定义一个数组,两个指针。

2. 栈的操作

就是基本的线性表的插入与删除操作,结合栈的特性使用即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文内容取自于小甲鱼的数据结构与算法。http://www.jianshu.com/p/230e6fde9c75 ...
    阿阿阿阿毛阅读 2,936评论 0 7
  • 1、线性表、栈和队列等数据结构所表达和处理的数据以线性结构为组织形式。栈是一种特殊的线性表,这种线性表只能在固定的...
    雾熏阅读 2,474评论 0 10
  • 数据 元素又称为元素、结点、记录是数据的基本单位 数据项是具有独立含义的最小标识单位 数据的逻辑结构 数据的逻辑结...
    PPPeg阅读 13,791评论 0 15
  • 第一章 绪论 什么是数据结构? 数据结构的定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 第二章...
    SeanCheney阅读 5,822评论 0 19
  • 古典老师的著作《你的生命有什么可能》读后简短总结 1.现实的理想主义和白日梦的区别 现实的理想主义:先有梦想,然后...
    草酰盛阅读 303评论 0 0