队列的链式实现(C语言)
来源:互联网 发布:阿里云医疗 编辑:程序博客网 时间:2024/05/22 01:59
/* Queue.h */#ifndef QUEUE_H_INCLUDED#define QUEUE_H_INCLUDED#include <stdio.h>#include <stdlib.h>struct Queue_Array { int element; struct Queue_Array* next;};typedef struct Queue_Array* Q_Array;struct _Queue { Q_Array q; Q_Array Front; Q_Array Rear;};typedef struct _Queue* Queue;/* Queue Operation */int isEmpty(Queue Q);void CreateQueue(Queue Q);void make_Queue_Empty(Queue Q);void Enqueue(int Elmt, Queue Q);int Front(Queue Q);void Dequeue(Queue Q);int FrontAndDequeue(Queue Q);void printQueue(Queue Q);#endif // QUEUE_H_INCLUDED
/* Queue.c */#include "Queue.h"int isEmpty(Queue Q) {return (Q->Front == Q->Rear);}void CreateQueue(Queue Q) { Q_Array q = (Q_Array)malloc(sizeof(struct Queue_Array)); q->element = 0; q->next = NULL; Q->Front = Q->Rear = q;}void Enqueue(int Elmt, Queue Q) { Q_Array q = (Q_Array) malloc (sizeof(struct Queue_Array)); q->element = Elmt; q->next = NULL; Q->Rear->next = q; Q->Rear = q;}int Front(Queue Q) { return Q->Front->element;}void Dequeue(Queue Q) { Q_Array q = Q->Front; Q->Front = Q->Front->next; free(q);}int FrontAndDequeue(Queue Q) { int frontElmt; Q_Array q = Q->Front; frontElmt = q->element; Q->Front = Q->Front->next; free(q); return frontElmt;}void make_Queue_Empty(Queue Q) { Q_Array q = Q->Front; while(q != Q->Rear) { Q->Front = Q->Front->next; free(q); q = Q->Front; } Q->Front = Q->Rear = NULL; Q->q = NULL; free(q);}void printQueue(Queue Q) { Q_Array q = Q->Front; while (q != Q->Rear->next) { printf("%d ", q->element); q = q->next; } printf("\n");}
测试:
/* main.c */#include "Queue.h"int main(){ Queue Q = (Queue) malloc (sizeof(struct _Queue)); Q->Front = NULL; Q->q = NULL; Q->Rear = NULL; CreateQueue(Q); Enqueue(1, Q); Enqueue(3, Q); Enqueue(5, Q); Enqueue(7, Q); Enqueue(9, Q); Enqueue(11, Q); printQueue(Q); Dequeue(Q); printQueue(Q); printf("Queue's front element is %d\n", Front(Q)); FrontAndDequeue(Q); printf("Queue's front element is %d\n", Front(Q)); printQueue(Q); return 0;}
结果:
0 0
- 队列的链式结构C语言实现
- 队列的链式实现(C语言)
- 队列的链式存储实现c语言
- C语言实现链式队列
- C语言实现链式队列
- c语言实现链式队列
- (C语言)队列的链式实现(数据结构十一)
- 数据结构——队列的链式实现(C语言)
- C语言一个队列的实现(链式)
- 链式队列的基础操作实现(C语言)
- C链式队列的实现
- 数据结构实现链式队列(C语言)
- C语言实现一个链式队列
- 数据结构之---C语言实现链式队列
- 链式循环队列实现(C语言)
- c语言数据结构实现-链式队列
- C语言 链式队列
- C语言 队列的链式结构的实现与表示 数据结构 队列的实现与表示
- Shell基础之-sed命令
- 战胜自我
- AndroidStudio Gradle:Resolvedependencies':app:_debugCompile' 问题解决纪录
- thinking in java 多态,接口,内部类,异常小结
- Shell基础之-cut命令
- 队列的链式实现(C语言)
- Shell基础之-paste命令
- Shell基础之-sort命令
- Palindrome Linked List
- High scalability - Harvard notes.
- oracle9i与10g与11g的区别
- Shell基础之-split命令
- Shell基础之-tr命令
- 数据库分页