数据结构之---C语言实现链式队列
2015-05-19 20:54
656 查看
//链式队列的存储 //杨鑫 #include <stdio.h> #include <stdlib.h> typedef int QElemType; //定义节点 typedef struct QNode { QElemType data; struct QNode *next; }QNode, *QueuePtr; //定义指针 typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue; //插入元素e进入队列 void en_Queue(LinkQueue *q, QElemType e) { QueuePtr temp = (QueuePtr)malloc(sizeof(QNode)); if(temp) { temp->data = e; temp->next = NULL; q->rear->next = temp; q->rear = temp; } } //初始化队列 void init_Queue(LinkQueue *q) { q->front = q->rear = (QNode *)malloc(sizeof(QNode)); q->front->next = NULL; } //创建队列 void create_Queue(LinkQueue *q) { int n = 0; init_Queue(q); printf("请输入要进入队列的元素,以0结束!\n"); while(scanf("%d", &n)) { if(n == 0) break; en_Queue(q, n); } } //e元素出队 void de_Queue(LinkQueue *q, QElemType *e) { if(q->front == q->rear) return; QueuePtr temp = q->front->next; if(q->front->next == q->rear) q->rear = q->front; *e = temp->data; q->front->next = temp->next; free(temp); } //判断队列是否为空 int is_Empty(LinkQueue *q) { if(q->front == q->rear) return 1; return 0; } //返回队列 int getlength_Queue(LinkQueue *q) { QueuePtr temp = q->front; int i = 0; while(temp != q->rear) { ++i; temp = temp->next; } return i; } //清空队列 void clear(LinkQueue *q) { QueuePtr temp = q->front->next; while(temp) { QueuePtr tp = temp; temp = temp->next; free(tp); } temp = q->front; q->front = q->rear = NULL; free(temp); } //打印队列元素 void print_Queue(LinkQueue *q) { if(q->front == q->rear) return; QueuePtr temp = q->front->next; while(temp != q->rear) { printf("%d ", temp->data); temp = temp->next; } printf("%d", temp->data); printf("\n"); } //第一个数据出队 void top_Queue(LinkQueue *q, QElemType *e) { if(q->front == q->rear) return; *e = q->front->next->data; } int main() { int i = 0, k = 0, top = 0; int len; LinkQueue q; create_Queue(&q); top_Queue(&q, &top); printf("队头的元素为:%d\n", top); len = getlength_Queue(&q); printf("遍历队中的所有元素:\n"); for(i = 0; i < len; i++) { de_Queue(&q, &k); printf("%d ", k); } printf("\n"); clear(&q); return 0; }
相关文章推荐
- 数据结构(严蔚敏)之六——链式队列c语言实现
- 数据结构——队列的链式实现(C语言)
- 数据结构:实验六(单循环链表实现链式队列)
- 看数据结构写代码(15)链式队列的实现(总结篇)
- 数据结构之队列的实现(c语言)
- 数据结构——链式队列模板类实现
- 数据结构之队列(C语言实现)
- 数据结构单链队列——链式存储实现
- 数据结构基础(14) --链式队列的设计与实现
- 数据结构基础(4)C语言实现栈--链式存储(动态栈)
- 数据结构之循环队列c语言实现
- 数据结构基础之循环队列C语言实现
- 数据结构.循环队列(C语言实现)
- 数据结构(三)——双链表、链式栈、链式队列 及实现
- 数据结构与C语言实现(二)——堆栈和队列
- 数据结构之队列的链式表示及其实现
- 数据结构(Data structure):使用双向链表实现队列(C语言)
- 数据结构——二叉树的链式实现(C语言)
- 数据结构——队列(C语言实现)
- 用C语言模块实现队列数据结构