知识大全 栈和队列 - 队列 - 链队列

Posted 结点

篇首语:要须心地收汗马,孔孟行世目杲杲。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 栈和队列 - 队列 - 链队列相关的知识,希望对你有一定的参考价值。

   链队列的定义

  队列的链式存储结构简称为链队列 它是限制仅在表头删除和表尾插入的单链表

   链队列的结构类型说明

  

>

  注意

  增加指向链表上的最后一个结点的尾指针 便于在表尾做插入操作

  链队列示意图见上图 图中Q为LinkQueue型的指针

   链队列的基本运算

  ( ) 置空队

  void InitQueue(LinkQueue *Q)

  

  Q >front=Q >rear=NULL;

  

  ( ) 判队空

  intQueueEmpty(LinkQueue *Q)

  

  return Q >front==NULL&&Q >rear==Null;

  //实际上只须判断队头指针是否为空即可

  

  ( ) 入队

  void EnQueue(LinkQueue *Q DataType x)

  //将元素x插入链队列尾部

  QueueNode *p=(QueueNode *)malloc(sizeof(QueueNode));//申请新结点

  p >data=x; p >next=NULL;

  if(QueueEmpty(Q))

  Q >front=Q >rear=p; //将x插入空队列

  else //x插入非空队列的尾

  Q >rear >next=p; //*p链到原队尾结点后

  Q >rear=p; //队尾指针指向新的尾

  

  

  ( ) 出队

  DataType DeQueue (LinkQueue *Q)

  

  DataType x;

  QueueNode *p;

  if(QueueEmpty(Q))

  Error( Queue underflow );//下溢

  p=Q >front; //指向对头结点

  x=p >data; //保存对头结点的数据

  Q >front=p >next; //将对头结点从链上摘下

  if(Q >rear==p)//原队中只有一个结点 删去后队列变空 此时队头指针已为空

  Q >rear=NULL;

  free(p); //释放被删队头结点

  return x; //返回原队头数据

  

  ( ) 取队头元素

  DataType QueueFront(LinkQueue *Q)

  

  if(QueueEmpty(Q))

  Error( Queue if empty );

  return Q >front >data;

  

  注意

  ①和链栈类似 无须考虑判队满的运算及上溢

  ②在出队算法中 一般只需修改队头指针 但当原队中只有一个结点时 该结点既是队头也是队尾 故删去此结点时亦需修改尾

  指针 且删去此结点后队列变空

  ③以上讨论的是无头结点链队列的基本运算 和单链表类似 为了简化边界条件的处理 在队头结点前也可附加一个头结点 增

  加头结点的链队列的基本运算【参见练习】

cha138/Article/program/sjjg/201311/23921

相关参考

知识大全 数据结构考研分类复习真题 第三章 栈和队列[13]

  已知链队列的头尾指针分别是f和r则将值x入队的操作序列是_______【合肥工业大学三(分)】  .区分循环队列的满与空只有两种方法它们是______和______【北京邮电大学二(分)】  .设

知识大全 栈和队列 - 队列 - 顺序队列

  顺序队列  顺序队列  ()顺序队列的定义  队列的顺序存储结构称为顺序队列顺序队列实际上是运算受限的顺序表  ()顺序队列的表示  ①和顺序表一样顺序队列用一个向量空间来存放当前队列中的元素  

知识大全 栈和队列 - 栈和队列的应用实例 - 队列的应用实例

  队列的应用舞伴问题  问题叙述  假设在周末舞会上男士们和女士们进入舞厅时各自排成一队跳舞开始时依次从男队和女队的队头上各出一人配成舞伴  若两队初始人数不相同则较长的那一队中未配对者等待下一轮舞

知识大全 数据结构考研分类复习真题 第三章 栈和队列[23]

  设计一个算法判断一个算术表达式中的括号是否配对算术表达式保存在带头结点的单循环链表中每个结点有两个域ch和link其中ch域为字符类型【南京邮电大学五】  请利用两个栈S和S来模拟一个队列已知栈的

知识大全 栈和队列 - 队列 - 队列的定义及基本运算

  定义  队列(Queue)是只允许在一端进行插入而在另一端进行删除的运算受限的线性表  >  ()允许删除的一端称为队头(Front)  ()允许插入的一端称为队尾(Rear)  ()当队列中没有

知识大全 栈和队列 - 栈和队列的应用实例 - 栈的应用实例(一)

  栈和队列的应用非常之广只要问题满足后进先出和先进先出原则均可使用栈和队列作为其数据结构  栈的应用  数制转换  将一个非负的十进制整数N转换为另一个等价的基为B的B进制数的问题很容易通过除B取余

知识大全 数据结构第三章(栈和队列)串讲+复习要点

  第三章栈和队列  本章介绍的是栈和队列的逻辑结构定义及在两种存储结构(顺序存储结构和链式存储结构)上如何实现栈和队列的基本运算本章的重点是掌握栈和队列在两种存储结构上实现的基本运算难点是循环队列中

知识大全 栈和队列 - 栈和队列的应用实例 - 栈的应用实例(二)

  栈与递归  ()递归  所谓递归是指若在一个函数过程或者数据结构定义的内部直接(或间接)出现定义本身的应用则称它们是递归的或  者是递归定义的  递归是一种强有力的数学工具它可使问题的描述和求解变

知识大全 栈和队列 - 栈 - 栈的定义及基本运算

  栈和队列是两种特殊的线性表它们的逻辑结构和线性表相同只是其运算规则较线性表有更多的限制故又称它们为运算受限  的线性表栈和队列被广泛应用于各种程序设计中  栈的定义及基本运算  栈的定义  栈(S

知识大全 链队列

链队列链队列的定义  队列的链式存储结构简称为链队列它是限制仅在表头删除和表尾插入的单链表链队列的结构类型说明 注意  增加指向链表上的最后一个结点的尾指针便于在表尾做插入操作  链队列示意图见上图图