数据结构——栈

从数据结构的角度来看,栈是插入和删除操作受限制的线性表;

从抽象数据类型的角度来看,栈是一种重要的抽象数据类型。

栈是插入和删除操作都在表尾的线性表,插入一个元素,放在表尾后面,删除一个元素从表尾开始。所以后进来的元素被先删除,即后进先出(last in first out),缩写为LIFO。

栈的逻辑结构:相邻元素具有单一的前驱和后继的线性关系,同时具有“后进先出”这种特性

顺序栈:具有顺序存储结构的栈。通常以数组的始端作为栈底,即下标为0的数组单元作为栈底。

两栈共享空间:在一个数组中同时存储两个栈。一个栈的栈底为下标为0处,另一个栈的栈底为下标为StackSize-1处(数组长度为StackSize)。两个栈应该满足增长顺序相向,同时空间需求正好相反。即一个栈的长度增长,另一个栈的长度缩短。

好处:减少了上溢的概率,提高了空间的利用。

链栈:具有链接存储结构的栈。以单链表的头结点做栈顶元素。因为插入、删除、取栈顶元素等操作都和栈顶元素有关。这样做很方便。因为如果栈顶元素要是尾结点的话,进行删除操作,不光需要栈顶指针还需要指向前一个结点的指针和头指针与头结点,减少空间复杂度,减少操作为复杂性。

结论:

①使用栈的时候,元素个数变化较大,使用链接存储结构,即链栈;

②使用栈的时候,元素个数变化较小,使用顺序存储结构,即顺序栈。

栈的操作:初始化一个空栈、释放栈的所有结点的存储空间、入栈操作、出栈操作、取栈顶元素,判断栈是否为空栈。

将一个数据结构变成抽象数据类型定义,其中抽象数据类型定义包括数据、逻辑结构、操作。当将这个数据结构在计算机里表示出来的时候,变成了存储结构。存储结构是抽象数据类型定义的实现:操作的实现(算法)、数据的实现(存储)

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值