⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 队列int.h

📁 数据结构代码(严为民)
💻 H
字号:
#include<stdlib.h>
#include<malloc.h>
typedef struct QNode{
	int data;
	struct QNode *next;
}Qnode,*QueuePtr;
typedef struct{
	QueuePtr front;
	QueuePtr rear;
}LinkQueue;


void InitQueue(LinkQueue *Q)
 { /* 构造一个空队列Q */
   Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));
   if(!Q->front)
     exit(0);
   Q->front->next=NULL;
 }

 void DestroyQueue(LinkQueue *Q)
 { /* 销毁队列Q(无论空否均可) */
   while(Q->front)
   {
     Q->rear=Q->front->next;
     free(Q->front);
     Q->front=Q->rear;
   }

 }

void ClearQueue(LinkQueue *Q)
 { /* 将Q清为空队列 */
   QueuePtr p,q;
   Q->rear=Q->front;
   p=Q->front->next;
   Q->front->next=NULL;
   while(p)
   {
     q=p;
     p=p->next;
     free(q);
   }
 }

 int QueueEmpty(LinkQueue *Q)
 { /* 若Q为空队列,则返回TRUE,否则返回FALSE */
   if(Q->front==Q->rear)
     return 1;
   else
     return 0;
 }

 int QueueLength(LinkQueue *Q)
 { /* 求队列的长度 */
   int i=0;
   QueuePtr p;
   p=Q->front;
   while(Q->rear!=p)
   {
     i++;
     p=p->next;
   }
   return i;
 }



 void EnQueue(LinkQueue *Q,int e)
 { /* 插入元素e为Q的新的队尾元素 */
   QueuePtr p=(QueuePtr)malloc(sizeof(QNode));
   if(!p) /* 存储分配失败 */
     exit(0);
   p->data=e;
   p->next=NULL;
   Q->rear->next=p;
   Q->rear=p;
   
 }

 int DeQueue(LinkQueue *Q)
 { /* 若队列不空,删除Q的队头元素,用e返回其值*/
   QueuePtr p;int e;
   
   p=Q->front->next;
   e=p->data;
   Q->front->next=p->next;
   if(Q->rear==p)
     Q->rear=Q->front;
   free(p);
   return e;
  
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -