数据结构----栈和队列(概念及其基本操作表现方法)

数据结构学习-----栈和队列

栈和队列的定义和特点

  • 栈和队列是两种常用、重要的线性结构,从数据结构角度上来看也是线性表。
  • 栈和队列是限定插入和删除只能在表的“端点”进行操作的线性表。

:是限定仅为表尾进行插入或者删除的线性表。因此,对栈来说,表尾端有其特殊含义,成为栈顶(top),相应的,表头端称为栈底(bottom)。不含元素的空表称为空栈。栈是一种后进先出的线性表;

与栈相反,队列(queue)是一种先进先出(first in first out,缩写为FIFO)的线性表,它只允许在表的一端进行插入,而在另一端删除元素。在队列中,允许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front)。

栈的表示和实现

栈的插入操作,叫做进栈,也称压栈、入栈。
栈的删除操作,叫作出栈,也有的叫弹栈。
在这里插入图片描述

栈的顺序存储结构

我们定义一个top变量来指示栈顶元素在数组中的位置,类似于小时候学过的油游标卡尺,它的来回移动就意味着栈顶top可以变大变小。当栈存在一个元素是,top等于0,因此通常把空栈的判断条件定为top等于-1.

栈的结构定义

typedef int SElemType;
typedef struct
{
   
	SElemTye data[MAXSIZE];
	int top;      /* 用于栈顶指针 */
}SqStack;
栈的顺序存储结构——进栈操作

对于栈的插入,即进栈操作(如下图所示):

在这里插入图片描述
代码如下:

/* 插入元素e为新的栈顶元素 */
Status Push(SqStack *s, SElemType e)
{
   
	if(s->top == MAXSIZE -1)    // 栈满
	{
   
		return ERROR;
	}
	s->top++;               /* 栈顶指针加一 */
	s->data[s->top] = e;    /* 将新插入元素赋值给栈顶空间 */
}
栈的顺序存储结构——出栈操作

出栈操作pop

在这里插入图片描述
代码如下:

/* 若栈不空࿰
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值