数据结构之队列
来源:互联网 发布:ncbi的geo数据库 编辑:程序博客网 时间:2024/06/14 09:07
栈
顺序栈
两栈共享空间:对于两个相同数据类型的栈,可以用数组的两端作为栈低的方法来趟两个栈共享数据,从而最大化的利用数组空间
链栈
队列:是只允许在一端进项插入操作,而在另一端进行删除操作的线性表,它是一种先进先出(First In First Out )的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。如键盘的输入到显示器上的显示就是队列的例子
顺序队列
循环队列:为了避免数组插入和删除使需要移动数据,于是引入了循环队列,使得队头和队尾可以在数组中循环变化,解决了移动数据的时间损耗
链队列
.循环队列是事先申请好空间,使用期间释放,链队栈,每次申请和释放结点也会存在一些时间开销。在可以确定队列的最大值的情况下,建议用循环队列
#include<stdio.h>#define size 5#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status ;typedef int elementType;typedef struct{elementType data[size];int front;//头指针int rear;//尾指针}sqQueue;Status init(sqQueue *queue){//初始化队列queue->front = 0;queue->rear = 0;return OK;}int getQueueLength(sqQueue * queue){//求队列的长度,通用的是 ((rear + 0) + (size - front))%sizereturn (queue->rear +size - queue->front)%size;}Status add(sqQueue * queue,elementType element){//在队列尾部插入元素if((queue->rear + 1)%size == queue->front ){//判断队列是否已满,采用的是头指针与尾指针是否相差一个return ERROR;}queue->data[queue->rear] = element;//rear指针向后移一位,若到最后就转到数组头部queue->rear = (queue->rear + 1)%size;return OK;}Status dele(sqQueue *queue,elementType *element){//队列空的判断if(queue->rear == queue->front){return ERROR;}*element = queue->data[queue->front];//把删除的值赋给elementqueue->front = (queue->front+ 1)%size;//若到最后则转到数组头部return OK;}void print(sqQueue *queue){//打印int a = queue ->front;int i;for( i = a ; i != queue->rear; a++, i = a%size ){printf("%d\t",queue->data[i]);}puts("");}void main()//测试代码{sqQueue queue ;elementType i = 0;int deleteElement;init(&queue);for( ; i<4 ; i++){add(&queue,i);}print(&queue);dele(&queue,&deleteElement);dele(&queue,&deleteElement);add(&queue,7);print(&queue);add(&queue,8);print(&queue);}
0 0
- 数据结构之队列(链式队列)
- 数据结构之队列(数组队列)
- 数据结构之队列-顺序队列
- 数据结构之循环队列
- 数据结构之顺序队列
- 数据结构之链队列
- java数据结构之队列
- 数据结构之队列
- 数据结构复习之【队列】
- 内核数据结构之队列
- 数据结构之队列实例
- 数据结构学习之队列
- 复习数据结构之队列
- C 队列之数据结构
- 基础数据结构之队列
- 数据结构之队列
- 大话数据结构之队列
- 数据结构之循环队列
- PhpStorm 配置IDE
- 安卓概述及开发环境
- 单点登录问题集合
- DAO全部的实现代码
- IOS-15-IOS支付宝集成时解决的3个蛋疼的问题!(最蛋疼的一次,希望你们少受折磨)
- 数据结构之队列
- Sklearn中的随机森林
- leetcode | Pascal's Triangle II
- log4J配置及在web.xml文件中的配置
- 如何向Windows虚拟机分配更多硬盘空间
- codevs 寻找道路
- Cocos2dx之为什么会有自动回收池
- java连接库的JDBC工具包
- 计算机集群