数据结构——顺序队列
来源:互联网 发布:淘宝网的营销模式是 编辑:程序博客网 时间:2024/05/21 19:31
头文件:
#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__
错误信息头文件:
#ifndef __ERROR_H__#define __ERROR_H__#include <stdio.h>#define ERROR -1#define FULL_STACK -2#define EMPTY_STACK -3#define MALLOC_ERROR -4#define FULL_QUEUE -5#define EMPTY_QUEUE -6int errno; // 错误号void myError(char *str);char* myStrError(int num);#endif // __ERROR_H__
输出错误信息函数:
#include "error.h"void myError(char *str){ char *msg = myStrError(errno); printf ("%s: %s\n", str, msg);}char* myStrError(int num){ switch (errno) { case ERROR: return "输入参数错误"; case FULL_STACK: return "满栈状态"; case EMPTY_STACK: return "空栈状态"; case MALLOC_ERROR: return "空间分配失败"; case FULL_QUEUE: return "队满状态"; case EMPTY_QUEUE: return "队空状态"; }}
功能函数:
#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;}
main函数:
#include "SqQueue.h"#include <stdio.h>int main(){ Queue q; InitQueue(&q); if (QueueEmpty(&q)) { printf ("空队\n"); } 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
- 数据结构——顺序队列
- 数据结构——队列之顺序队列
- 数据结构——队列之顺序存储
- 数据结构小结——顺序队列
- C++——数据结构之 顺序队列 链式队列?
- 【数据结构-队列】顺序队列
- 数据结构:队列- 顺序队列
- 数据结构Java实现——②队列--->队列的“奇葩”一循环顺序队列
- 数据结构——栈与队列(顺序栈、链栈、循环队列、链队列)
- 数据结构学习(六)——循环顺序队列的操作
- 基本数据结构——队列的顺序表示
- 数据结构——顺序队列的C++实现
- 数据结构之自建算法库——顺序环形队列
- 数据结构实践——建立顺序环形队列算法库
- 数据结构之线性表——队列的顺序存储
- 第四篇:基本数据结构——队列的顺序表示
- 数据结构五—循环队列的顺序存储结构
- 数据结构—队列的顺序和链式存储
- DevExpress GridControl的使用,DevExpress.XtraGrid.Views.Grid.GridView使用
- Linux NTP服务器配置
- Neo4j初探
- cocos2dx-3.3 导出自定义类到 lua 过程详解
- 智能路径技术设计(一期)
- 数据结构——顺序队列
- 堆排序
- Ehcache 中ehcache.xml 配置详解和示例
- WPF 设置TextBox为空时,背景为文字提示。
- python3下:Was unable to import superset Error: No module named 'MySQLdb'
- Linux-Centos7通过 ssh 远程登录其他用户
- linux下的定时或计时操作(gettimeofday等的用法,秒,微妙,纳秒
- odoo 定时任务的使用方法
- 视频目标检测--Flow-Guided Feature Aggregation for Video Object Detection