顺序存储:

typedef int Position;
struct QNode {ElementType *Data;     /* 存储元素的数组 */Position Front, Rear;  /* 队列的头、尾指针 */int MaxSize;           /* 队列最大容量 */
};
typedef struct QNode *Queue;Queue CreateQueue( int MaxSize )
{Queue Q = (Queue)malloc(sizeof(struct QNode));Q->Data = (ElementType *)malloc(MaxSize * sizeof(ElementType));Q->Front = Q->Rear = 0;Q->MaxSize = MaxSize;return Q;
}bool IsFull( Queue Q )
{return ((Q->Rear+1)%Q->MaxSize == Q->Front);
}bool AddQ( Queue Q, ElementType X )
{if ( IsFull(Q) ) {printf("队列满");return false;}else {Q->Rear = (Q->Rear+1)%Q->MaxSize;Q->Data[Q->Rear] = X;return true;}
}bool IsEmpty( Queue Q )
{return (Q->Front == Q->Rear);
}ElementType DeleteQ( Queue Q )
{if ( IsEmpty(Q) ) { printf("队列空");return ERROR;}else  {Q->Front =(Q->Front+1)%Q->MaxSize;return  Q->Data[Q->Front];}
}

链式存储:

typedef struct Node *PtrToNode;
struct Node { /* 队列中的结点 */ElementType Data;PtrToNode Next;
};
typedef PtrToNode Position;struct QNode {Position Front, Rear;  /* 队列的头、尾指针 */int MaxSize;           /* 队列最大容量 */
};
typedef struct QNode *Queue;bool IsEmpty( Queue Q )
{return ( Q->Front == NULL);
}ElementType DeleteQ( Queue Q )
{Position FrontCell; ElementType FrontElem;if  ( IsEmpty(Q) ) {printf("队列空");return ERROR;}else {FrontCell = Q->Front;if ( Q->Front == Q->Rear ) /* 若队列只有一个元素 */Q->Front = Q->Rear = NULL; /* 删除后队列置为空 */else                     Q->Front = Q->Front->Next;FrontElem = FrontCell->Data;free( FrontCell );  /* 释放被删除结点空间  */return  FrontElem;}
}

队列的定义与操作-顺序存储,链式存储(C语言)相关推荐

  1. 堆栈的定义与操作-顺序存储,链式存储(C语言)

    顺序存储: typedef int Position; struct SNode {ElementType *Data; /* 存储元素的数组 */Position Top; /* 栈顶指针 */in ...

  2. 数据结构(二):线性表包括顺序存储结构(顺序表、顺序队列和顺序栈)和链式存储结构(链表、链队列和链栈)...

    还记得数据结构这个经典的分类图吧: 今天主要关注一下线性表. 什么是线性表 线性表的划分是从数据的逻辑结构上进行的.线性指的是在数据的逻辑结构上是线性的.即在数据元素的非空有限集中 (1) 存在唯一的 ...

  3. 串--串的定义,顺序、链式存储结构,BF、KMP模式匹配算法(C语言描述)

    此文章仅作为自己学习过程中的记录和总结,同时会有意地去用英文来做笔记,一些术语的英译不太准确,内容如有错漏也请多指教,谢谢! 一.串(String)的定义: 串(String):由零个或多个字符组成的 ...

  4. 5.顺序存储 + 链式存储

    这节以下面的脑图展开讲解. 顺序存储:顺序存储结构是存储结构类型中的一种,该结构是把逻辑上相邻的结点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现. 链式存储:链式存储 ...

  5. c语言二叉树链式存储,C语言 二叉树的链式存储实例

    二叉树的链式存储 实现二叉树的基本操作:建立.遍历.计算深度.结点数.叶子数等. 输入C,先序创建二叉树,#表示空节点: 输入H:计算二叉树的高度: 输入L:计算二叉树的叶子个数: 输入N:计算二叉树 ...

  6. 数据结构之顺序存储与链式存储

    数据结构之顺序存储与链式存储 定义 特点 前驱和后继 存储结构 顺序存储结构 定义 特点 优缺点 基本操作 链式存储结构 1.单链表 节点 基本操作 2.静态链表 3.双向链表 4.循环链表 顺序存储 ...

  7. 单链表(线性表的链式存储)---C语言版

    目录 单链表(线性表的链式存储)---C语言版 一.相关说明 二.单链表的定义 三.单链表上具体操作的实现和时间复杂度 1.初始化表.构造一个空表. 2.根据数组创建单链表 3.求表长 4.插入操作. ...

  8. 线性表的链式存储结构及代码实现(单链表,双链表,循环链表)

      在上一篇博文中介绍了线性表的顺序存储方式,它最大的缺点就是在插入和删除操作时会移动大量的元素,这显然会耗费很多时间.后来人们便想到了用链式存储方式来解决上面这一问题.链式存储线性表时,不需要使用地 ...

  9. 从零开始学数据结构和算法(二)线性表的链式存储结构

    链表 链式存储结构 定义 线性表的链式存储结构的特点是用一组任意的存储单元的存储线性表的数据元素,这组存储单元是可以连续的,也可以是不连续的. 种类 结构图 单链表 应用:MessageQueue 插 ...

最新文章

  1. 如何用纯 CSS 创作一个同心圆弧旋转 loader 特效
  2. Genome-scale de novo assembly using ALGA 使用ALGA进行 基因组规模的从头组装
  3. [转] 字符集、字符编码
  4. C++基础之指向成员的指针
  5. u32和字符串的转换函数
  6. 性能:15个JavaScript本地存储技术的函数库和工具
  7. iOS开发中didSelectRowAtIndexPath tap事件响应延迟
  8. NYOJ 20 吝啬的国度 (搜索)
  9. react当中子组件改变父组件的状态
  10. Linux 命令之 cd 命令-切换目录
  11. ubuntu linux固定ip设置,Ubuntu 配置静态IP
  12. Linux创建用户、用户组 及 删除
  13. 学java教程之面向对象(四)
  14. 循环神经网络(LSTM和GRU)(1)
  15. Tomcat重启命令
  16. URAL 1069 Prufer Code 优先队列
  17. 亚马逊、速卖通、Shopee阿里国际站、mercari、沃尔玛、newegg、美客多等跨境平台卖家如何有效结合测评,补单打破瓶颈
  18. floor()函数与round()函数
  19. Hexo主题修改Next.Mist
  20. 修改android预览分辨率,wm命令使用方法(修改android 分辨率)修改

热门文章

  1. PHP基础(必须熟练掌握的基础)
  2. 【遥感数字图像处理】基础知识:第二章 遥感知识回顾、遥感数字图像处理基础知识
  3. C#判断闰年函数及举例
  4. 剑指offer之求两个链表的第一个公共节点
  5. Android之Windows下搭建React Native Android开发环境(差不多搞了一天)
  6. 老师“鬼话”全曝光!哈哈哈哈哈全国的老师都这样吗?
  7. 为什么男性比女性死得更早,心疼一秒钟!
  8. python flask框架是什么_Flask框架是什么?带你安装运行第一个Flask程序
  9. 电脑温度检测软件哪个好_实时检测Mac电脑的温度
  10. 被问到了!为什么一定要使用分布式,内行啊