数据结构------栈

?个人主页:我的主页
?小白一枚,欢迎指教?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2VKauJ0Q-1664964335381)(/Users/wuxin/Library/Application Support/typora-user-images/image-20220911095802734.png)]

  • 注:数据结构三要素----逻辑结构,数据的运算,存储结构(物理结构)存储结构不同,运算的实现方式就不同

一、栈的定义:

栈(stack)是只允许在一端进行插入或删除操作的线性表。是一种特殊的线性表,但是只能在某一端进行插入或删除操作。

1、重要的术语

  • 栈顶(Top):线性表只允许进行插入和删除的那一端

  • 栈底(Bottom):固定的,不允许进行插入和删除的另一端

  • 空栈:不含任何元素的空表

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IRfojUU4-1664964335382)(/Users/wuxin/Library/Application Support/typora-user-images/image-20220911101538717.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pGLhDJmp-1664964335384)(/Users/wuxin/Library/Application Support/typora-user-images/image-20220911101725289.png)]

(上图元素等进栈顺序为:a1->a2->a3->a4->a5)

(出栈顺序为:a5->a4->a3->a2->a1)

  • TIP:特点是后进先出 Last In First Out (LIFO)

2、栈的基本操作:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V7nfsXeR-1664964335385)(/Users/wuxin/Library/Application Support/typora-user-images/image-20220911103908778.png)]


3、栈的常考题型:

  • 有哪些合法的出栈顺序?

例如:a->b->c->d->e。有哪些合法的出栈顺序?

  1. e、d、c、b、a 所有的元素都进栈以后再出
  2. 一边进栈,一边出栈

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qbbMQH4N-1664964335387)(/Users/wuxin/Library/Application Support/typora-user-images/image-20220911105211973.png)]


4、总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pNUx4nfu-1664964335388)(/Users/wuxin/Library/Application Support/typora-user-images/image-20220911105338016.png)]


二、顺序栈

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cOfrlPn2-1664964335389)(/Users/wuxin/Library/Application Support/typora-user-images/image-20220911105736970.png)]

1、顺序栈的定义:

 #define MaxSize 10. //定义栈中元素的最大个数
  typedef struct{
     ElemType data[MaxSize];  //静态数组存放栈中的元素
      int top;       //栈顶指针
  } SqStack;      //sq->代表sequence 顺序
 
void testStack(){
  SqStack S; //声明一个顺序栈,分配空间
  //...后续操作..
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eorME0le-1664964335390)(/Users/wuxin/Library/Application Support/typora-user-images/image-20220911111015433.png)]

2、初始化操作:

在这里插入图片描述
在这里插入图片描述


3、进栈操作:(插入)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A3ZU1qlC-1664964335395)(/Users/wuxin/Library/Application Support/typora-user-images/image-20221005163345080.png)]

4、出栈(删除):

在这里插入图片描述

5、读栈顶元素:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s8gIabuR-1664964335398)(/Users/wuxin/Library/Application Support/typora-user-images/image-20221005164157522.png)]

(注意与出栈操作的区别)


三、共享栈:(两个栈共享同一片空间)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KbuGq1i1-1664964335400)(/Users/wuxin/Library/Application Support/typora-user-images/image-20221005164859695.png)]

  • 判断栈满 :top0+1==top1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0fXEvaOt-1664964335401)(/Users/wuxin/Library/Application Support/typora-user-images/image-20221005165030834.png)]

  • 回收:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oElfLJSb-1664964335402)(/Users/wuxin/Library/Application Support/typora-user-images/image-20221005165214782.png)]


版权声明:本文为weixin_50490968原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。