美文网首页
基础数据结构和算法4:栈

基础数据结构和算法4:栈

作者: jdzhangxin | 来源:发表于2019-05-01 13:41 被阅读0次

在线性表中,顺序表和链表可以访问任意位置结点,在任意位置插入和删除结点。栈和队列是对上述操作加以限制。

  1. 在线性表的一端插入、删除、访问结点。
  2. 在线性表的一端插入结点、另一端删除、访问结点。

1. 栈是什么?

栈是一种只能从表的一端存取数据且遵循 LIFO(先进后出)原则的线性存储结构。

栈的开口端被称为栈顶
封口端被称为栈底。

通常只会对栈执行以下两种操作:

  1. 向栈中添加元素,此过程被称为"进栈"(入栈或压栈);
  2. 从栈中提取出指定元素,此过程被称为"出栈"(或弹栈);

2. 栈怎么用?

栈一般用来处理逆序回退相关的处理。

3. 栈怎么实现?

栈是操作受限制的线性表,根据不同的存储结构可分成顺序栈和链式栈。

  • 在顺序栈中,可以将顺序表的有效长度作为栈顶指针,在顺序表的末尾删除和插入节点。
  • 在链式栈中,可以将链表的头结点作为栈顶指针,入栈采用头插法。

下面是顺序栈的实现。

3.1 定义结构

typedef int StackType; //存储单元类型

typedef struct stackNode {
    StackType *element; //存储空间基地址
    int size; //当前长度
    int capacity; //当前分配的存储容量
}Stack;

3.2 定义操作

  1. 初始化栈
Stack stack_init(int size);
  1. 入栈
void stack_push(Stack* stack,StackType element);

3.访问栈顶元素

StackType* stack_top(Stack* stack);
  1. 出栈
StackType stack_pop(Stack* stack);

4. 练习

5. 作业

双栈

相关文章

  • 基础数据结构和算法4:栈

    在线性表中,顺序表和链表可以访问任意位置结点,在任意位置插入和删除结点。栈和队列是对上述操作加以限制。 在线性表的...

  • 学习清单

    算法、数据结构二叉树、链表、栈... golang基础 swoole mysql websocket

  • 安卓开发者的知识清单

    临近学校课程结束,回顾和梳理了下几门主要课程的脉络: 1.数据结构和算法基础数据结构:数组、链表、栈、队列、哈希表...

  • 2019-07-11—栈

    栈:Java数据结构和算法(四)——栈 string和char一般这么转化: 21、定义栈的数据结构,请在该类型中...

  • 2020年最新整理的java学习路线

    阶段一:数据结构 一、基础 1、基本的数据结构 [](1)基础概念 [](2)数组 [](3)链表 [](4)栈:...

  • 最新整理的java学习路线

    阶段一:数据结构 一、基础 1、基本的数据结构 [](1)基础概念 [](2)数组 [](3)链表 [](4)栈:...

  • 链表问题

    前言 如果说数据结构是算法的基础,那么数组和链表就是数据结构的基础。 因为像堆,栈,对,图等比较复杂的数组结基本上...

  • 浅谈算法和数据结构

    注:采转归档,自己学习查询使用 浅谈算法和数据结构: 一 栈和队列浅谈算法和数据结构: 二 基本排序算法浅谈算法和...

  • 数据结构与算法学习开篇

    数据结构与算法知识图谱 20个最常用的、最基础数据结构与算法 10个数据结构:数组、链表、栈、队列、散列表、二叉树...

  • Java数据结构算法(五)排序

    算法这点粗略整理一下,后面完善 Java数据结构算法(一)链表 Java数据结构算法(二)栈和队列 Java数据结...

网友评论

      本文标题:基础数据结构和算法4:栈

      本文链接:https://www.haomeiwen.com/subject/rmigwqtx.html