码迷,mamicode.com
首页 > 其他好文 > 详细

链式队列

时间:2020-05-16 20:30:36      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:sizeof   alt   strong   efi   元素   尾插法   地址   开始   while   

队列结构


 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #define OK 1;
 5 #define False -1;
 6 //结点结构
 7 typedef struct QNode
 8 {
 9     char date;
10     struct QNode *next;
11 }QNode;
12 //链式队列结构
13 typedef struct Flag
14 {
15      QNode *front;
16     QNode *rear;
17 }Flag;

队列初始化

 

 1 //初始化
 2 int InitQueue (Flag *q)
 3 {
 4     q->front=q->rear=(QNode *)malloc(1*sizeof(QNode));
 5     if(!q->front)
 6     {
 7         exit(0);
 8     }
 9     q->front->next=NULL;
10     return OK;
11 }

 

入队

 1 //入队
 2 int CreateQueue(Flag *q,char e)
 3 {
 4      QNode *p;
 5      p=(QNode *)malloc(1*sizeof(QNode));
 6      if(!p)
 7      {
 8          exit(0);
 9      }
10      p->date=e;
11      p->next=NULL;
12      
13      q->rear->next=p;//尾插法,第一个元素位于首元节点位置,front相当于头节点,不存数
14      q->rear=p;//队尾变更
15      return OK;
16 }

打印

 

 1 //打印
 2 int PrintQueue(Flag *q)
 3 {
 4     QNode *pMove;
 5     pMove=q->front->next;//易错,注意刚开始遍历的地方类似于链表中的首元结点,此处的定位有一层嵌套
 6     while(pMove!=NULL)
 7     {
 8         printf("%c",pMove->date);
 9         pMove=pMove->next;
10     }
11     return OK;
12 }

 

判空

 

1 //判空
2 int Empty(Flag *q)
3 {
4     if(q->front==q->rear)
5         return OK;
6}

 

出栈并销毁

 

 1 //出栈+销毁
 2 int DeleteQueue(Flag *q,int a)//出栈
 3 {
 4     
 5     QNode *w;
 6     w=q->front->next;//相当于将首元的地址和数值(间接)一起传给w
 7     
 8     q->front->next=w->next;
 9     if(a==1)
10     printf("\n出队一个元素:%c",w->date);
11     if( q->rear == w)//当只剩一个元素的处理
12         q->rear = q->front;
13     free(w);
14     return OK;
15 }

 

主函数测试

 1 //出栈+销毁
 2 int DeleteQueue(Flag *q,int a)//出栈
 3 {
 4     
 5     QNode *w;
 6     w=q->front->next;//相当于将首元的地址和数值(间接)一起传给w
 7     
 8     q->front->next=w->next;
 9     if(a==1)
10     printf("\n出队一个元素:%c",w->date);
11     if( q->rear == w)
12         q->rear = q->front;
13     free(w);
14     return OK;
15 }

技术图片

 

链式队列

标签:sizeof   alt   strong   efi   元素   尾插法   地址   开始   while   

原文地址:https://www.cnblogs.com/YOLO-in-the-sun/p/12901981.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!