数据结构之栈和队列---队列的基本操作
2015-08-03 17:00
746 查看
问题:实现队列的基本操作,内容包括队列的结构体,队列的初始化,队列的销毁,进队操作及出队操作
//队列节点的结构体
//队列链的结构体
//队列的初始化
//lq->front分配空间时,类型为QPoint,但大小为QNode,不要把大小写成QPoint
//队列的销毁
//进队操作
//队首不存放元素
//出队操作
//队列节点的结构体
typedef struct QNode { ElemType data; struct QNode *next; }QNode, *QPoint;
//队列链的结构体
typedef struct LinkQueue { QPoint front; QPoint rear; }LinkQueue;
//队列的初始化
//lq->front分配空间时,类型为QPoint,但大小为QNode,不要把大小写成QPoint
LinkQueue* InitQueue() { LinkQueue *lq; lq = (LinkQueue *)malloc(sizeof(LinkQueue)); lq->front = (QPoint)malloc(sizeof(QNode)); lq->rear = lq->front; return lq; }
//队列的销毁
void DestroyQueue(LinkQueue *lq) { while (lq->front) { lq->rear = lq->front->next; free(lq->front); lq->front = lq->rear; } free(lq); }
//进队操作
//队首不存放元素
void EnQueue(LinkQueue *lq, ElemType elem) { QPoint qn = (QPoint)malloc(sizeof(QNode)); qn->data = elem; qn->next = NULL; lq->rear->next = qn; lq->rear = qn; }
//出队操作
int DeQueue(LinkQueue *lq, ElemType *elem) { QPoint tp; tp = lq->front->next; if(tp==NULL) { printf("队列为空\n"); return -1; } *elem = tp->data; lq->front->next = tp->next;
<span style="white-space:pre"> </span>if(lq->rear==tp) <span style="white-space:pre"> </span>lq->rear = lq->front; free(tp); return 0; }
相关文章推荐
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- 探索PowerShell (二) PowerShell的基本操作
- C#数据结构揭秘一
- 算法系列15天速成 第九天 队列
- 数据结构之Treap详解
- C语言单链队列的表示与实现实例详解
- mysql 队列 实现并发读
- C#队列Queue用法实例分析
- C#多线程处理多个队列数据的方法
- C语言循环队列的表示与实现实例详解
- C++循环队列实现模型
- C#内置队列类Queue用法实例
- JavaScript数据结构和算法之图和图算法
- Array栈方法和队列方法的特点说明
- C#通过链表实现队列的方法
- SQLite数据库安装及基本操作指南
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- javascript 学习笔记(一)DOM基本操作
- Java数据结构及算法实例:插入排序 Insertion Sort