队列和数组
来源:互联网 发布:中国少儿编程 logo 编辑:程序博客网 时间:2024/06/07 03:29
#include <stdio.h>#include <stdlib.h>#include <time.h>#include <malloc.h>#include<assert.h>#define N 10typedef struct Queue{ int nHead; int nTail; int nLen; int *pnArr;}Queue, *PQueue; //创建数组式队列,这里包含队列存储的个数,就是长度nlen,初始时,ntop和ntail表示数据存储在第几个位置,PQueue Create(int nLen){ if (nLen <= 0) { return NULL; } PQueue pQueue = (PQueue)malloc(sizeof(Queue)); //创建一个长度为nlen的队列,为该队列开辟内存空间 pQueue->nLen = nLen; //初始化对象中数据成员 pQueue->nHead = 0; // pQueue->nTail = 0; //指向队列最后一个数据的下一个位置 pQueue->pnArr = (int *)malloc(sizeof(int) * nLen); //为存储数据的指针开辟出足够存储nlen的int数据的空间 return pQueue;} void EnQueue(PQueue pQueue, int nValue) //入队列操作{ if (NULL == pQueue || pQueue->pnArr == NULL) //判断队列是不是空的,是否建立 { printf("队列未创建成功!\n"); return; } if (pQueue->nTail == pQueue->nLen) //判断队列是不是满的,,,如果是满的则队尾所在的位置正好是队列的长度 { printf("队列已满!\n"); return; } pQueue->pnArr[pQueue->nTail] = nValue; //在存储数据的指针中添加数据 (pQueue->nTail)++; //队尾的位置加1}int DeQueue(PQueue pQueue) //出队列操作{ if (NULL == pQueue || pQueue->pnArr == NULL) { printf("队列未创建成功!\n"); assert(0); } if (pQueue->nHead == pQueue->nTail) { printf("队列已空!\n"); assert(0); } int nValue = pQueue->pnArr[pQueue->nHead]; //从队首开始输出数据,队首的位置添加1 (pQueue->nHead)++; return nValue;}bool IsEmpty(PQueue pQueue){ return pQueue->nHead == pQueue->nTail; //队列是不是空表示队首和队尾在同一位置}bool IsFull(PQueue pQueue){ return pQueue->nTail == pQueue->nLen; //队列蛮的条件,表示队尾 的位置正好是队列的长度}void Destroy(PQueue pQueue){ free(pQueue->pnArr); pQueue->pnArr = NULL; free(pQueue); //释放队列指针的内存 pQueue = NULL;}int main(){ PQueue pQueue = Create(N); for (int i = 0; i < N; i++) { EnQueue(pQueue, i); } printf("%d \n", IsFull(pQueue)); while (!IsEmpty(pQueue)) { printf("%d ", DeQueue(pQueue)); } system("pause"); return 0;}
0 0
- 队列和数组
- 数组、链表、堆栈和队列
- 数组模拟队列和栈
- 数组、链表、堆栈和队列
- 数组、链表、堆栈和队列
- 数组、链表、堆栈和队列
- 数组、链表、堆栈和队列
- 数组、链表、堆栈和队列
- 数组、链表、堆栈和队列
- 数组、链表、堆栈和队列
- 数组、链表、堆栈和队列
- 数组、链表、堆栈和队列
- 数组结构-栈和队列
- 数组、链表、堆栈和队列
- 数组、链表、堆栈和队列
- 自定义数组列表和队列
- 数组、链表、堆栈和队列
- 数组、链表、堆栈和队列
- 根据刚体上若干个点的加速度确定任意点的加速度的方法
- 3Sum Closest
- 虚拟隔离网络外网访问(SNAT)
- maven项目中jetty运行配置
- Effective C++——条款9(第2章)
- 队列和数组
- 无监督学习和监督学习的用途
- Android 悬浮窗的实现源码
- noip2002 选数(深搜+质数判断)
- mybatis在xml文件中处理大于号小于号的方法
- Xcode: Auto property synthesis will not synthesize property 解决
- 数据结构与算法分析Java版第1章练习1.2
- springMVC文件上传
- 通过代码快速理解Java代码块