数据结构全攻略--线性结构不攻自破之栈和队列

本文详细介绍了线性结构中的栈和队列,包括顺序栈、链栈、顺序队列和循环队列。栈是后进先出的数据结构,常见操作有进栈、退栈和取栈顶元素;队列则是先进先出,分为顺序队列和循环队列,主要操作有入队、出队和取队头元素。文章还讨论了栈和队列可能出现的上溢、下溢及假上溢情况,并提供了相关运算。
摘要由CSDN通过智能技术生成

      上篇博客讨论了线性结构的两种基本的结构顺序表和链表,它们两者各有优缺点。总之吧,当我们要存储容量不固定的数据结构并且要对数据进行多次插入和删除操作时要多考虑使用链表结构,当只涉及对存储的数据进行只存或只读操作时应优先选用顺序表结构。

继续讨论线性结构--栈和队列

 

一、线性结构

 

 1、栈


      栈是一种特殊的线性表。它的结构非常类似于日常生活中的瓶子,只有一端开口,而插入和删除的操作只能在瓶子的瓶口处进行,这种一端开口是它的特殊性。这种特殊性也决定了栈中的数据操作顺序是先入后出的,也就是说先进入栈中的数据,最后才能出去。

 

 

 
    栈的基本运算:

                  

      Note:栈是一种先进后出的线性表,但是并不意味着不会出现先进先出的情况。如:当1、2、3、4顺次入栈时,出栈的顺序也可能是1、2、3、4,这种情况发生条件是每个数入栈后出栈,然后下一个数入栈。即:1入栈后出栈,然后是2入栈后出栈,其次是3入栈后出栈,最后是4入栈后出栈,这样顺序就变成了1、2、3、4。
      由于栈也是线性表,因此线性表的存储结构对栈也适用,通常栈有顺序栈和链栈两种存储结构。


  1.1 顺序栈

 

      在顺序栈中数据是按照顺序进行存储的。需要我们了解的是顺序栈中有上溢和下溢的概念。
      上溢:栈顶指针指出栈的外面。我们把顺序栈看做一个盒子,那么当我们把数据放到这个栈中超过盒子的顶部时就放不下了,这时指针指向了栈的外面,这种现象我们称为上溢。
    下溢:从空栈中取数据。当栈中没有数据时,我们再去取数据,看看没数据,把盒子拎起来看看盒底,还是没有,这就是下溢。
顺序栈的类型定义为:

#define stacksize 100
 typedef char datatype;
 typedef struct{
  datatype data[stacksize];
  int top;
 }seqstack;


    1.1.1 顺序栈的基本运算


    (1) 置空栈

Void initstack(seqstack *s)
  {
   s->top=-1;
  }

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值