队列的基本操作

问题描述:

 设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的队列初始化,入队列和出队列的算法。

代码:      

View Code
 1 #include<stdio.h>
 2 typedef  char QElemType;
 3 typedef struct QNode{
 4     QElemType data;
 5     struct QNode *next;
 6 }QNode, *QueuePtr;//结构体的定义,对这些的掌握应该要能不看书就能写出来的。//QNode为结构体类型,QueuePtr为结构体名
 7 typedef struct{
 8     QueuePtr rear;//指向队尾元素的指针
 9     int size;
10 }queue;//queue为结构体名
11 
12 int InitQueue(queue &q)
13 {
14     q.rear=NULL;
15     q.size=0;
16     return 1;
17 }
18 int  EnQueue(queue &q, QElemType e)//入队列
19 {
20     QueuePtr p;
21     p=new QNode;//比较new和malloc用法的区别
22     if(p.size==0) return 0;
23     p->data=e;
24     p->next=q.rear->next;
25     q.rear->next=p;
26     q.rear=p;//队尾的指针在移动
27     return 1;
28 }
29 int  DeQueue(queue &q,QElemType &e)//出队列
30 {
31     if(q.size==0) return false;
32     if(q.size==1)
33     {
34         p=q.rear;
35         e=p->data;
36         q.rear=NULL;
37         delete p;
38     }
39     else
40     {
41      QueuePtr p;
42      p=q.rear->next;
43      e=p->data;
44      q.rear->next=p->next;
45      delete p;
46     }
47     q.size--;
48     return 1;
49 }
50 
51 
52 
53 
54 
55 
56 }

总结:

  一步一步来,不着急,慢慢地赶上来,一切还来得及,按照自己原有的计划,先把书上的算法都弄明白后,然后再去看其他的,所以心里不能杂乱,渴求的是自己思考力,学习力的提高,其他的就不需要多想,保持平常心,平静!
 

原文地址:https://www.cnblogs.com/wj204/p/3048141.html