链式队列的复习
来源:互联网 发布:新海诚风格知乎 编辑:程序博客网 时间:2024/06/18 09:38
#ifndef __LINKQUEUE_H__#define __LINKQUEUE_H__#include "error.h"#define TRUE 1#define FALSE 0typedef int QueueData;typedef struct _node{QueueData data;struct _node *next;}Node;typedef struct _queue{Node *front;Node *rear;}Queue;Queue* Create_Queue();int QueueEmpty (Queue *Q); // 进队int EnQueue (Queue *Q, QueueData x); // 出队int DeQueue (Queue *Q, QueueData *x);// 取队头int GetFront (Queue *Q, QueueData *x);int Destroy_Queue (Queue *Q);#endif // __LINKQUEUE_H__
#include "LinkQueue.h"#include <stdlib.h>Queue* Create_Queue(){Queue * q = (Queue*)malloc(sizeof(Queue)/sizeof(char));if (q == NULL){errno = MALLOC_ERROR;return NULL;}// 置空队q->front = NULL;q->rear = NULL;return q;}int QueueEmpty (Queue *q){if (q == NULL){errno = ERROR;return FALSE;}return q->front == NULL;}int EnQueue (Queue *q, QueueData x){if (q == NULL){errno = ERROR;return FALSE;}Node * node = (Node*)malloc(sizeof(Node)/sizeof(char));if (node == NULL){errno = MALLOC_ERROR;return FALSE;}node->data = x;node->next = NULL;if (q->front == NULL){q->front = node;q->rear = node;}else{q->rear->next = node;q->rear = node;}return TRUE;}int DeQueue (Queue *q, QueueData *x){if (q == NULL){errno = ERROR;return FALSE;}if (QueueEmpty(q)){errno = EMPTY_QUEUE;return FALSE;}Node *p = q->front;*x = p->data;q->front = p->next;free(p);if (q->front == NULL)q->rear = NULL;return TRUE;}int GetFront (Queue *q, QueueData *x){if (q == NULL){errno = ERROR;return FALSE;}if (QueueEmpty(q)){errno = EMPTY_QUEUE;return FALSE;}*x = q->front->data;return TRUE;}int Destroy_Queue (Queue *q){if (q == NULL){errno = ERROR;return FALSE;}int x;while (QueueEmpty(q) != TRUE){DeQueue(q, &x);}free(q);return TRUE;}#include "LinkQueue.h"#include <stdio.h>int main(){Queue* q = Create_Queue();int i;char str[50];for (i = 0; i < 10; i++){if (EnQueue(q, i) != TRUE){sprintf (str, "第 %d 个元素入队失败", i);myError(str);}}int x;for (i = 0; i < 10; i++){if (DeQueue(q, &x) != TRUE){sprintf (str, "第 %d 个元素出队失败", i);myError(str);}printf ("x = %d\n", x);}return 0;}
阅读全文
0 0
- 链式队列的复习
- 队列的链式存储结构(复习)
- 链式栈的复习
- 队列复习篇之链式存储结构
- 队列的实现:链式队列
- 链式队列的建立
- 队列的链式表示
- 链式队列的存储....
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现。
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 队列的链式实现
- 队列的链式存储
- 队列的链式存储
- Oracle 存储过程中的DDL语句
- JAVA set接口的基础知识
- JavaScript怎么改变div的背景颜色
- 使用python实现HMM
- Add Two Numbers leetcode java
- 链式队列的复习
- 设置漂亮的eclipse主题(Theme)风格
- tensorflow 学习笔记6 TensorBoard可视化神经网络过程
- 初学oracle 连表查询
- 3行命令在Linux下安装Google浏览器
- 做个善良的人吧
- Battleship
- 设计模式之工厂模式
- linux在终端下输入的"<"和“>"分别代表什么