数据结构2.1栈、队列和串

本文详细介绍了数据结构中的特殊线性表——栈、队列和串。栈是一种后进先出的线性表,分为顺序栈和链栈;队列是先进先出的线性表,包括顺序队列、循环队列和链队列;串是由零个或多个字符组成的有限序列,支持多种基本操作。文中还讨论了各种结构的定义和操作。
摘要由CSDN通过智能技术生成

特殊线性表

栈、队列和串是三种特殊的线性表。其中,栈和队列是操作受限制的线性表,串是数据类型受限制的线性表。

栈(stack)

栈的定义

栈是一种特殊的线性表,只允许在一端进行插入和删除操作。允许插入和删除的一端称为栈顶,另一端称为栈底。处于栈顶位置的元素称为栈顶元素。栈中含有元素的个数称为栈长,含有0个数据元素的栈称为空栈。其特点为后进先出或先进后出,因此栈又称为后进先出的线性表。
习惯上,把栈的插入操作称为入栈(或称为进栈、压栈),把栈的删除操作称为出栈(或称为退栈、弹栈)。

栈的基本操作

1->初始化操作initstack(S),其作用是初始化一个空栈S。
2->求栈长操作getlen(S),其作用是返回栈S的元素个数,即栈长。
3->取栈顶元素操作gettop(S,x),其作用是通过x带回栈S的栈顶元素值。
4->入栈操作push(S,x),其作用是将值为x元素压入到栈S中,使x成为新的栈顶元素。
5->出栈操作pop(S,x),其作用是将非空栈的栈顶元素删除,同时将栈顶元素值赋给x,新的栈顶元素为栈S中原栈顶的下一个元素。
6->判栈空操作emptystack(S),其作用是判断栈S是否为空,若栈S为空,则返回1,否则返回0。
7->输出栈操作list(S),其作用是依次输出栈S中的所有元素。

顺序栈

栈的顺序存储结构,即用一段地址连续的存储单元依次存放从栈底到栈顶之间的数据元素,同时利用一个变量记录当前栈顶的位置(下标或指针),称为栈顶指针。
在初始化栈时,栈顶指针值为0,表示空栈;在栈中插入新的元素后,栈顶指针增加1;在栈中删除栈顶元素时,栈顶指针减少1。

顺序栈的类型定义
#define INIZSIZE 100//存储空间的初始分配量
typedef int ElemType;//在实际应用中,根据需要定义所需的数据类型
typedef struct{
   
int top;//栈顶指针
ElemType *base;//存放元素的动态数组空间
int stacksize;//当前栈空间的大小
}sqstack;

栈在计算机语言处理和将递归算法改为非递归算法等方面起着非常重要的作用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值