链式队列ADT实现(C语言)2018.3.14
2018-03-14 19:10
417 查看
#include <stdio.h> #include <stdlib.h> /**< 链式队列 */ /**< 定义结点 */ typedef struct { int data; struct QNode* next; }QNode; /**< 定义队列结构体 */ typedef struct { QNode* front; QNode* rear; int len; }Queue; /**< 初始化队列 */ void Init_QUEUE(Queue* q)///声明变量的时候已经初始化,声明指针的时候为野指针,必须首先初始化。 { q->front=q->rear=(QNode*)malloc(sizeof(QNode)); q->front->next=NULL; q->len=0; } /**< 销毁队列 */ void Destroy_QUEUE() { } /**< 队列判空 */ int IsEmpty_QUEUE(Queue* q) { if(q->front==q->rear) return 1; else return 0; } /**< 入队操作 */ void En_QUEUE(Queue* q,int Val) { QNode p; p.data=Val; q->rear->next=&p; q->rear=q->rear->next; q->len++; } /**< 出队操作 */ void Out_QUEUE(Queue* q) { QNode* p=q->front->next; q->front->next=q->front->next->next;///编译失败?q->front->next->next写成p->next才能编译成功 free(p); q->len--; } /**< 取队首元素 */ int GetFront_QUEUE(Queue* q) { int n=q->front->next->data; if(!IsEmpty_QUEUE(q)) { printf("%d",n); return n; } else return 0; } /**< 测试代码 */ int main() { Queue q; Init_QUEUE(&q); En_QUEUE(&q,1); En_QUEUE(&q,2); En_QUEUE(&q,3); En_QUEUE(&q,4); Out_QUEUE(&q); printf("Hello world!\n"); return 0; }
相关文章推荐
- 链式队列ADT改 (C语言)2018.3.14
- 数据结构-->队列的链式实现 ADT
- 数据结构之---C语言实现链式队列
- 队列的链式实现(C语言)
- 数据结构---C语言之队列的链式表示和实现(链队列)
- 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现
- C语言实现一个链式队列
- (C语言)队列的链式实现(数据结构十一)
- 数据结构学习笔记-队列的链式存储(C语言实现)
- C语言 队列的链式结构的实现与表示 数据结构 队列的实现与表示
- (C语言)队列的链式实现(数据结构十一)
- 数据结构 c语言实现链式循环队列(输入数字入队 输入字母出队)
- 用C语言实现简单链式队列结构
- 数据结构C语言实现之链式队列的6种算法代码
- C语言 队列 链式结构 实现
- c语言实现循环队列和链式队列
- 数据结构实现链式队列(C语言)
- 链式队列的基础操作实现(C语言)
- 数据结构——队列的链式实现(C语言)
- C_栈和队列(ADT)-队列的链式表示和实现