链式队列ADT改 (C语言)2018.3.14
2018-03-15 00:09
169 查看
#include <stdio.h> #include <stdlib.h> /**< 链式队列 */ /**< 定义结点 */ struct QNode { int data; struct QNode* next; }; /**< 定义队列结构体 */ struct Queue { struct QNode* front; struct QNode* rear; int len; }Queue; /**< 初始化队列 */ void Init_QUEUE(struct Queue* q)///声明变量的时候已经初始化,声明指针的时候为野指针,必须首先初始化。 { q->front=q->rear=(struct QNode*)malloc(sizeof(struct QNode));///一定要malloc不能定义结点p,否则随着函数结束p还给堆下次还可能从堆上分配同样的地址。 q->front->next=NULL; q->len=0; } /**< 销毁队列 */ void Destroy_QUEUE() { } /**< 队列判空 */ int IsEmpty_QUEUE(struct Queue* q) { if(q->front==q->rear) return 1; else return 0; } /**< 入队操作 */ void En_QUEUE(struct Queue* q,int Val) { struct QNode *p=malloc(sizeof(struct QNode)); p->data=Val; q->rear->next=p; q->rear=q->rear->next; //printf("p=%o\t",p); //printf("first=%o\t",q->front->next); //printf("rear=%o\t",q->rear); //printf("\n"); q->len++; } /**< 出队操作 */ void Out_QUEUE(struct Queue* q) { struct QNode* p=q->front->next; q->front->next=q->front->next->next; free(p); q->len--; } /**< 取队首元素 */ int GetFront_QUEUE(struct Queue* q) { int n=q->front->next->data; if(!IsEmpty_QUEUE(q)) { printf("%d\n",q->front->next->data); return n; } else return 0; } /**< 测试代码 */ int main() { struct Queue q; Init_QUEUE(&q); En_QUEUE(&q,1); En_QUEUE(&q,2); En_QUEUE(&q,3); En_QUEUE(&q,4); GetFront_QUEUE(&q); Out_QUEUE(&q); GetFront_QUEUE(&q); Out_QUEUE(&q); GetFront_QUEUE(&q); printf("Hello world!\n"); return 0; }
相关文章推荐
- 链式队列ADT实现(C语言)2018.3.14
- (C语言)队列的链式实现(数据结构十一)
- 数据结构——队列的链式实现(C语言)
- C语言 队列 链式结构 实现
- 队列的链式实现(C语言)
- 数据结构---C语言之队列的链式表示和实现(链队列)
- C_栈和队列(ADT)-队列的链式表示和实现
- 链式队列的基础操作实现(C语言)
- C语言 队列的链式结构的实现与表示 数据结构 队列的实现与表示
- 队列(C语言实现,基于链式结构)
- 队列的链式结构C语言实现
- C语言实现链式队列
- C语言 链式队列
- 数据结构(严蔚敏)之六——链式队列c语言实现
- 数据结构学习笔记-队列的链式存储(C语言实现)
- 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现
- c语言实现链式队列
- 数据结构之---C语言实现链式队列
- 数据结构-->队列的链式实现 ADT
- 对链式队列的实现(C语言)