笔记4:队列
来源:互联网 发布:长沙学历网络教育报名 编辑:程序博客网 时间:2024/06/05 09:30
1、顺序队列
#ifndef __SQQUEUE_H__#define __SQQUEUE_H__#include "error.h"#define TRUE 1#define FALSE 0#define SIZE 10typedef int QueueData;typedef struct _queue{QueueData data[SIZE];int front; // 指向队头的下标int rear; // 指向队尾的下标}Queue;// 置空队int InitQueue (Queue *Q); // 判队空否int QueueEmpty (Queue *Q); // 判队满否 int QueueFull (Queue *Q); // 进队 int EnQueue (Queue *Q, QueueData x); // 出队 int DeQueue (Queue *Q, QueueData *x);// 取队头int GetFront (Queue *Q, QueueData *x);#endif // __SQQUEUE_H__
#include "SqQueue.h"int InitQueue (Queue *q){if (q == NULL){errno = ERROR;return FALSE;}// 置空队q->front = 0;q->rear = 0;return TRUE;}int QueueEmpty (Queue *q){if (q == NULL){errno = ERROR;return FALSE;}return q->front == q->rear;}int QueueFull (Queue *q) {if (q == NULL){errno = ERROR;return FALSE;}return q->front == (q->rear+1)%SIZE;} int EnQueue (Queue *q, QueueData x){if (q == NULL){errno = ERROR;return FALSE;}if (QueueFull(q)){errno = FULL_QUEUE;return FALSE;}q->rear = (q->rear+1) % SIZE;q->data[q->rear] = x;return TRUE;}int DeQueue (Queue *q, QueueData *x){if (q == NULL){errno = ERROR;return FALSE;}if (QueueEmpty(q)){errno = EMPTY_QUEUE;return FALSE;}q->front = (q->front + 1) % SIZE;*x = q->data[q->front];return TRUE;}int GetFront (Queue *q, QueueData *x){if (q == NULL){errno = ERROR;return FALSE;}if (QueueEmpty(q)){errno = EMPTY_QUEUE;return FALSE;}int index = (q->front + 1) % SIZE;*x = q->data[index];return TRUE;}
2、链式队列
#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;}
阅读全文
0 0
- 笔记4:队列
- 队列笔记
- 队列笔记
- python数据结构学习笔记-4-堆栈 队列
- 严蔚敏版数据结构学习笔记(4):队列
- 栈、队列、优先队列笔记
- 数据结构笔记5 队列
- 等待队列学习笔记
- 等待队列学习笔记
- 等待队列学习笔记
- 等待队列学习笔记
- 队列学习笔记
- 内核等待队列(笔记)
- 数据结构学习笔记--队列
- 【笔记】环形队列链式
- 《数据结构》复习笔记--队列
- 队列学习笔记
- 栈和队列笔记
- JavaScript的关键字与函数定义
- Java
- 导航栏实现
- caffe添加一个新层
- win32api的一个小疑惑
- 笔记4:队列
- 8月1日总结
- 数据库性能优化二:数据库表优化
- Session 会话控制
- opencv 形态学处理——腐蚀
- CodeForces 825B:Five-In-a-Row(模拟)
- 动态代理
- leetcode-7&9
- spring拾遗(四)——自定义注解实现interceptor的指定拦截