队列的基本操作(采用链式存储结构)
2013-06-19 14:51
507 查看
队列的初始化、入队、出对、销毁队列。
#include <stdio.h> #include <stdlib.h> #define TRUE 1 #define FALSE 0 #define ERROR -1 typedef int Status; typedef char ElemType; typedef struct qNode { ElemType data; struct qNode *next; } QNode,*QueuePtr; typedef struct { QueuePtr front,rear; } QueueLink; Status InitQueue(QueueLink *q); Status InsertQueue(QueueLink *q,ElemType e); Status DeleteQueue(QueueLink *q,ElemType *e); Status DestroyQueue(QueueLink *q); int main(int argc,char **argv) { QueueLink q; InitQueue(&q); int i,j; for(i=0;i<6;i++) { InsertQueue(&q,i+65); } char ch; for(j=0;j<6;j++) { DeleteQueue(&q,&ch); printf("%c,",ch); } printf("\n"); DestroyQueue(&q); exit(0); } Status InitQueue(QueueLink *q) { q->front=q->rear=(QueuePtr)malloc(sizeof(QNode)); if(!q->front) return ERROR; q->front->next=NULL; return TRUE; } //入队 Status InsertQueue(QueueLink *q,ElemType e) { QueuePtr p=(QueuePtr)malloc(sizeof(QNode)); if(!p) return ERROR; p->data=e; p->next=NULL; q->rear->next=p; q->rear=p; return TRUE; } //出对 Status DeleteQueue(QueueLink *q,ElemType *e) { if(q->front==q->rear) return FALSE; QueuePtr p=q->front->next; *e=p->data; q->front->next=p->next; if(q->rear==p) q->rear=q->front; free(p); return TRUE; } Status DestroyQueue(QueueLink *q) { while(q->front) { q->rear=q->front->next; free(q->front); q->front=q->rear; } return TRUE; }
相关文章推荐
- 队列的基本操作(C语言版):进队,出队,输出
- PHP数据结构之七_队列的链式存储和队列的基本操作
- 队列的基本操作
- 优先队列的基本操作实现与应用(Java实现)
- 链队列基本操作-数据结构
- C语言消息队列--基本操作
- C链队列的基本操作
- 数据结构-链队列的基本操作
- 002使用两个栈模拟队列的基本操作
- 队列的基本操作周期
- 队列的基本操作
- 多态实现线性表(队列,串,堆栈),要求具备线性表的基本操作
- 队列的创建于基本操作
- 数据结构与算法MOOC / 第三章 栈与队列 练习题 2:栈的基本操作
- 队列的基本操作(顺序结构)C/C++
- 数据结构之栈和队列---栈的基本操作
- 【源代码】C++算法(四)队列的基本操作 (用队列实现十进制转换十六进制)
- 【队列】链式结构实现队列的基本操作
- C++实现普通队列,循环队列的基本操作(初始化,入队,出队,获取队列首元素等)
- C语言实现循环队列基本操作(初始化、判断队空、入队、出队)