队列的基本操作
问题描述:
设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的队列初始化,入队列和出队列的算法。
代码:
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 }
总结:
一步一步来,不着急,慢慢地赶上来,一切还来得及,按照自己原有的计划,先把书上的算法都弄明白后,然后再去看其他的,所以心里不能杂乱,渴求的是自己思考力,学习力的提高,其他的就不需要多想,保持平常心,平静!
作者:wj704
出处:http://www.cnblogs.com/wj204/