数据结构队列的实现
声明:本文仅供交流学习使用,严禁利用所学技术违法犯罪,否则后果自负
循环队列问题
123456789101112131415161718192021222324252627282930 | 1,静态队列为什么必须是循环队列2,循环队列需要几个参数来确定 需要2个参数来确定2个参数不同场合有不同的含义 font和rear3,循环队列各个参数的含义 1),队列初始化 font和rear的值都是零 2),队列非空 font代表的是队列的第一个元素 rear代表的是队列的最后一个有效元素 3),队列空 font和rear相等,但是不一定是零4,循环队列入队伪算法 两步完成 1),将值存入r所代表的位置 2),正确的写法:r = (r+1)%数组的长度 错误的写法:r = r+15,循环队列出队伪算法 f = (f + 1)% 数组的长度6,如何判断循环队列为空 如果front 与 rear 的值相等,即 f = r 该队列为空7,如何判断循环队列已满 两种方式: 1,多增加一个表标识参数 2,少用一个元素【通常用第二种方式】 1),如果r和f的值紧挨着,则表示队列已满 2),用c语言伪算法表示就是: if((r+1)%数组长度 == f){以满} else{不满} |
程序实现
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | #include<malloc.h>typedef struct //定义一个数据类型QUEUE{ int * pBase; int front; int rear;}QUEUE; 大专栏 数据结构队列的实现span>void init(QUEUE *); bool en_queue(QUEUE *, int val);//入队void traverse_queue(QUEUE *);//遍历队列bool full_queue(QUEUE *); //判断入队之前是不是已经满了bool out_queue(QUEUE *, int * ); //出队bool emput_queue(QUEUE *); //判断出队的时候是否为空int main(void){ QUEUE Q; int val; init(&Q); en_queue(&Q,1); en_queue(&Q,2); en_queue(&Q,3); en_queue(&Q,4); if(out_queue(&Q,&val)) { printf("出队成功,队列出队的元素是:%dn" , val); } else { printf("出队失败n"); } traverse_queue(&Q); return 0;}void init(QUEUE *pQ){ pQ->pBase = (int *)malloc(sizeof(int)*6); pQ->front = 0; pQ->rear = 0;}bool full_queue(QUEUE *pQ){ if((pQ->rear +1)%6 == pQ->front) return true; else return false;}bool en_queue(QUEUE * pQ, int val){ if(full_queue(pQ)) { return false; } else { pQ->pBase[pQ->rear] = val; pQ->rear = (pQ->rear + 1)%6; return true; }}void traverse_queue(QUEUE * pQ)//遍历队列{ int i = pQ->front; while(i != pQ->rear) { printf("%d ",pQ->pBase[i]); i = (i+1)%6; } }bool emput_queue(QUEUE *pQ){ if(pQ->front==pQ->rear) { return true; } else { return false; }}bool out_queue(QUEUE * pQ, int * pVal){ if(emput_queue(pQ)) { return false; } else { *pVal = pQ->pBase[pQ->front]; pQ->front = (pQ->front+1)%6; return true; }} |
12 | 出队成功,出队元素是1,2,3,4 |
相关推荐
koushr 2020-11-12
zhangxiafll 2020-11-13
kikaylee 2020-10-31
范范 2020-10-28
MILemon 2020-10-22
hugebawu 2020-10-12
LauraRan 2020-09-28
shenwenjie 2020-09-24
omyrobin 2020-09-23
guangcheng 2020-09-22
qiangde 2020-09-13
hanyujianke 2020-08-18
晨曦之星 2020-08-14
xiesheng 2020-08-06
KAIrving 2020-08-02
xiesheng 2020-08-02
范范 2020-07-30
chenfei0 2020-07-30