首页 > 其他分享 >数据结构复习——链、链栈。

数据结构复习——链、链栈。

时间:2024-11-12 21:58:16浏览次数:1  
标签:链表 出栈 复习 指向 栈顶 链栈 数据结构 节点

1、栈(Stack):是只允许在一端进行插入或删除的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。

2、栈的常见基本操作:
InitStack(&S):初始化一个空栈S。
StackEmpty(S):判断一个栈是否为空,若栈为空则返回true,否则返回false。
Push(&S, x):进栈(栈的插入操作),若栈S未满,则将x加入使之成为新栈顶。
Pop(&S, &x):出栈(栈的删除操作),若栈S非空,则弹出栈顶元素,并用x返回。
GetTop(S, &x):读栈顶元素,若栈S非空,则用x返回栈顶元素。
DestroyStack(&S):栈销毁,并释放S占用的存储空间(“&”表示引用调用)。

3、链栈:采用链式存储的栈称为链栈。

链栈组成:

  1. 节点结构体:每个节点包含一个数据域和一个指向下一个节点的指针。

  2. 栈结构体:包含一个指向栈顶的指针。

 

图示:

 链栈实质是遵循栈的属性的链表:栈顶可以理解为链表的头结点。链栈遵循栈顶先出原则,故仅通过栈顶便可以实现出入栈操作。对于空栈来说,链表原定义是头指针指向空,那么链栈的空其实就是top=NULL的时候。链栈的进栈push和出栈pop操作都很简单,时间复杂度均为O(1)。

入栈实质上是链表操作的头插法:先将新节点指向原栈顶,再将栈顶指针指向新节点即完成入栈操作。

出栈:先取出栈顶值,再将栈顶指向栈顶的下一个节点即完成出栈操作。

链栈的优点是便于多个栈共享存储空间和提高其效率,且不存在栈满上溢的情况。

 

标签:链表,出栈,复习,指向,栈顶,链栈,数据结构,节点
From: https://www.cnblogs.com/sejwy/p/18542403

相关文章

  • 基础数据结构【c语言版】之 “图” 详细讲述
    别忘了请点个赞+收藏+关注支持一下博主喵!!!1. 图的定义和术语1.1图的定义**图(Graph)**是由顶点(Vertex)和边(Edge)组成的一个集合,可以表示顶点之间的关系。通常,图可以表示为G=(V,E)G=(V,E)G=(V,E),其中:VVV是顶点集合,表示图中的所有顶点。EEE是边集合,表示图中顶点之间的连接......
  • 【初阶数据结构与算法】线性表之链表的分类以及双链表的定义与实现
    文章目录一、链表的分类二、双链表的实现1.双链表结构的定义2.双链表的初始化和销毁初始化函数1初始化函数2销毁函数3.双链表的打印以及节点的申请打印函数节点的申请4.双链表的头插和尾插头插函数尾插函数5.双链表的查找和判空查找函数判空函数6.双链表的头删和尾......
  • 数据结构——快速排序
    目录一、排序思想二、代码实现(一)hoare版1、原版——固定选key2、随机选key、三数取中选key(二)挖坑法(三)前后指针法(四)小区间优化(五)非递归写法一、排序思想任取待排序元素序列中的某元素作为基准值,按照该基准值将待排序集合分割成两子序列,左子序列中所有元素均小于基......
  • C++数据结构实验题目解析
    目录题目:考点分析:难点1:就地逆置步骤:代码实现:核心代码详细解释:难点2:①非递减链表,②删除相同元素代码详解①:代码详解②:完整代码:大家好,今天我就来给大家分析一下我上期分享的题目的详细解析,编程的能力都是逐步提升的,但是思维的锻炼可以提前进行,这样有助于我们以后自......
  • 郝玩的数据结构1——单调栈,单调队列
    栈和队列是很郝咏的Stl,那么,我们手搓——用数组模拟故事背景:辣鸡老o在学单调栈&单调队列——我栈top为栈顶,易得出出栈即top--,入栈++top=(ovo)......——完全不会讲,那么上马:点击查看代码#include<bits/stdc++.h>usingnamespacestd;constintN=114514;intstk[N],top=0;......
  • 力扣 170. 两数之和 III - 数据结构设计 two-sum III
    数组系列力扣数据结构之数组-00-概览力扣.53最大子数组和maximum-subarray力扣.128最长连续序列longest-consecutive-sequence力扣.1两数之和N种解法two-sum力扣.167两数之和IItwo-sum-ii力扣.170两数之和IIItwo-sum-iii力扣.653两数之和IVtwo-sum-IV力......
  • 【MySQL】MySQL基础知识复习(下)
    前言上一篇博客介绍了MySQL的库操作,表操作以及CRUD。【MySQL】MySQL基础知识复习(上)-CSDN博客本篇将进一步介绍CRUD操作,尤其是查找操作目录一.数据库约束1.约束类型1.1NULL约束1.2UNIQUE:唯一约束1.3DEFAULT:默认值约束1.4PRIMARYKEY:主键约束1.5FOREIGNKEY:外键约束......
  • C++ 数据结构详解
    目录C++数据结构详解引言1.数组(Array)示例代码2.向量(Vector)示例代码3.链表(List)示例代码4.栈(Stack)示例代码5.队列(Queue)示例代码6.集合(Set)示例代码7.映射(Map)示例代码C++数据结构详解引言数据结构是计算机科学中的一个重要概念......
  • python中常见的8种数据结构之一字典及其使用方法
    字典(Dictionary)是Python中常见的数据结构之一,用于存储一组配对的键(key)和值(value)。字典是可变的、无序的,并且键必须是唯一的。创建字典的方法有两种:使用花括号{}或使用内置的dict()函数。下面是一些常见的字典操作和方法:1.创建字典:my_dict={'key1':'value1','key2'......
  • 数据结构 ——— 链式二叉树oj题:对称二叉树
    目录题目要求手搓一个对称二叉树代码实现 题目要求给你一个二叉树的根节点 root ,检查它是否轴对称手搓一个对称二叉树代码演示://数据类型typedefintBTDataType;//二叉树节点的结构typedefstructBinaryTreeNode{ BTDataTypedata;//每个节点的数据......