栈和队列

栈和队列


本质上是稍加限制的线性表

栈和队列定义


顺序栈定义

typedef struct
{
    int data[maxSize];
    int top;
}sqStack;

链栈结点定义


typedef struct sNode
{
    int data;
    struct sNode *next;
}sNode;

队列
顺序队列

typedef struct
{
    int data[maxSize];
    int front;
    int rear;
}sqQueue;

链队列
链队类型定义

typedef struct qListNode
{
    struct qListNode *front;
    struct qListNode *rear;
}qListNode;

链队节点定义


typedef struct qNode
{
    int dada;
    struct qNode *next;
}qNode;

栈的四个操作

  1. 进栈 :实质就是头插法
  2. 出栈 :实质就是删除
  3. 栈空 :st.top == -1 or lst->next ==NULL
  4. 栈满:st.top ==maxSize-1 链表不存在栈满

顺序队列(队列的优化,克服了假溢出)

队的基本操作
循环指针:front =(front+1)%maxSize;
队空:front ==rear;
队满:(rear+1)%maxSize ==front;
进队:qu.rear=(qu.rear+1)%maxSize;qu[qu.rear].data =x;
出队:qu.front =(qu.front+1)%maxSize;x = qu[qu.front].data;


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、栈 1.1 栈的定义 栈(Stack):只允许在一端进行插入或删除操作的线性表。首先栈是一种线性表,但是限定这...
    末雨潮声阅读 3,982评论 0 0
  • 栈 栈的英文单词是Stack,它代表一种特殊的线性表,这种线性表只能在固定一端(通常认为是线性表的尾端)进行插入,...
    Jack921阅读 5,438评论 0 5
  • 1 栈的概念 栈:限定仅在表尾进行插入和删除操作的线性表,后进先出的线性表,简称LIFO结构 栈顶:表尾,允许插入...
    冯九岁阅读 4,444评论 0 0
  • 栈是限定仅在表尾进行插入和删除操作的线性表。表尾端称为栈顶,表头端称为栈底。不含元素的空表称为空栈。栈是后进先出的...
    yinxmm阅读 5,813评论 0 0
  • 主要学习知识点 栈的概念及其抽象数据类型描述 顺序栈类和链栈的描述和实现 队列的概念及其抽象数据类型描述 顺序循环...
    JiaJianHuang阅读 3,663评论 0 0

友情链接更多精彩内容