【数据结构与算法】基本数据结构——队列的顺序表示
来源:互联网 发布:运营数据分析方法 编辑:程序博客网 时间:2024/04/25 02:05
以下为操作队列的算法,该队列为静态队列,用循环数组实现。
给该队列分配的内存长度为len+1,但实际只用了len个内存空间来保存数据,这样做是为了更方便判断队列的满与空。队列中front位置中存放的是队首的数据,rear位置的前一个位置中存放队尾的数据,而rear位置中则没有数据存放,这样做的目的是为了在入队和出队时方便对队列的操作,而不用考虑特殊情况
操作系统:ubuntu
编译软件:gcc
结果截图:
源代码:
#include#include#includeint len;//全局变量,静态队列的实际有效长度,即实际存放了len个数typedef struct Queue{int *pBase;int front;int rear;} QUEUE,*PQUEUE;PQUEUE creat_queue();bool enter_queue(PQUEUE,int);bool full_queue(PQUEUE);bool empty_queue(PQUEUE);void traverse_queue(PQUEUE);bool out_queue(PQUEUE,int *);int main(){ //创建静态队列,并定义出队数据的保存在变量data_save中int data_save;PQUEUE pQueue = creat_queue();//将数据入队,并遍历输出队列中的数据enter_queue(pQueue,1);enter_queue(pQueue,2);enter_queue(pQueue,3);enter_queue(pQueue,4); traverse_queue(pQueue);//将数据出队,并遍历输出队列中的数据out_queue(pQueue,&data_save); traverse_queue(pQueue);return 0;}//创建并初始化一个空的静态队列,返回指向该队列的指针,此时首尾在队列同一位置处PQUEUE creat_queue(){printf("Input the length of the queue:\n");scanf("%d",&len);PQUEUE pQueue = (PQUEUE)malloc(sizeof(QUEUE));pQueue->pBase = (int *)malloc(sizeof(int)*(len+1));if(NULL==pQueue || NULL==pQueue->pBase){ printf("malloc failed!"); exit(-1);}else{ pQueue->front = 0; pQueue->rear = 0;}return pQueue;}//判断该静态队列是否满bool full_queue(PQUEUE pQueue){if(pQueue->front == (pQueue->rear+1)%(len+1)) return true;else return false;}//判断该静态队列是否空bool empty_queue(PQUEUE pQueue){if(pQueue->front == pQueue->rear) return true;else return false;}//将变量val从队尾入队bool enter_queue(PQUEUE pQueue,int val){if(full_queue(pQueue)) return false;else{ pQueue->pBase[pQueue->rear] = val; pQueue->rear = (pQueue->rear+1)%(len+1); return true;}}//将数据出队,并将其保存在out_data指针指向的位置bool out_queue(PQUEUE pQueue,int *out_data){if(empty_queue(pQueue)) return false;else{ *out_data = pQueue->front; pQueue->front = (pQueue->front+1)%(len+1); return true;}}//遍历该静态队列,并自队首向队尾输出队列中的数据void traverse_queue(PQUEUE pQueue){int i = pQueue->front;printf("now datas in the queue are:\n");while(i != pQueue->rear){ printf("%d ",pQueue->pBase[i]); i = (i+1)%(len+1);}printf("\n");return ;
- 【数据结构与算法】基本数据结构——队列的顺序表示
- 基本数据结构——队列的顺序表示
- 第四篇:基本数据结构——队列的顺序表示
- 【数据结构与算法】基本数据结构——队列的链式表示
- 【数据结构与算法001】基本数据结构——队列
- 数据结构,队列,顺序表示
- 【数据结构与算法】基本数据结构——线性表的链式表示
- 【数据结构与算法】基本数据结构——栈的链式表示
- 《数据结构》队列的顺序表示--循环队列
- 第九篇:基本数据结构——队列的链式表示
- 数据结构算法代码实现——线性表的顺序表示与实现(二)
- 数据结构—线性表的顺序表示与实现
- 数据结构与算法系列-队列-顺序队列
- 数据结构(5):循环队列——队列的顺序表示和实现
- 数据结构与算法(二)线性表的顺序表示
- 数据结构:循环队列(队列的顺序表示)
- 【数据结构与算法】 队列——队列的应用举例
- 算法与数据结构之七----顺序队列
- 博客系统不好用!
- 【数据结构与算法】汉诺塔算法——C语言递归实现
- 程序员的学习与积累
- 1522包含min函数的栈
- POJ 1604 求大数N的阶乘的变型
- 【数据结构与算法】基本数据结构——队列的顺序表示
- 架构介绍
- Sicily 1001. Alphacode
- 调用 fork() 两次以避免僵死进程
- 05-翻墙软件的使用
- Webdriver_Ruby实例代码(2)
- 初二学生用c语言写的全排列
- 网站采用gb2312编码遇到的问题
- 【数据结构与算法】基本数据结构——线性表的链式表示