首页 > 其他 > 详细

数据结构之顺序队列实现

时间:2020-04-06 23:02:48      阅读:75      评论:0      收藏:0      [点我收藏+]
  
//
Queue.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include <stdio.h> #include <string.h> // 队列是现实生活中理想模型一种 忽略很多细节 但即使这样 依然很有用 // Task:实现一个数据队列 数组实现 任务队列 等待队列 优先级队列 循环队列 // 一生二 //空间骨骼框架: 数组 //英文名: queue //任何数据结构都不是无穷无尽 因此我们缩小10 20 个 其实很有意义的 // 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表 FIFO // 说的就是不能插队喽 乱插队
// 没有考虑 PV操作和数据的移动 同步操作
// 数据整体的移动
#define MAX 10 struct queue // 描述一小个 也能描述整体 { int data[10]; // 定义域 int head; int tail; }; static struct queue dataqueue; static int queue_init(struct queue* Q) { dataqueue.head = 0; dataqueue.tail = 0; dataqueue.head = dataqueue.tail; memset(&dataqueue.data, 0, sizeof(dataqueue)); } static int queue_insertElem(struct queue* Q, int ElemData) { if ( Q->tail >= MAX ) { printf("insert data error\n"); return -1; } else { Q->tail = ElemData; Q->tail++; } return 0; } static int queue_deletElem(struct queue* Q) { if (Q->head <= Q->tail-1) // 注意数组越界 数组是从0开始计算的 不然出现从0开始的问题 { // 如果Q->head 为0 刚刚就导致 Q->head 清0 这个时候就会导致 从0开始操作 Q->data[Q->head] = 0; //下面两个是有顺序的 Q->head++; } else { } printf("Q->tail is Q->head is %d %d\n", Q->tail, Q->head); return 0; } int main() { //尾部添加数据 同步问题 尾部有数据的时候 头部才能干其他事情 queue_insertElem(&dataqueue, 0); queue_insertElem(&dataqueue, 1); queue_insertElem(&dataqueue, 2); queue_insertElem(&dataqueue, 3); queue_insertElem(&dataqueue, 4); queue_insertElem(&dataqueue, 5); queue_insertElem(&dataqueue, 6); queue_insertElem(&dataqueue, 7); queue_insertElem(&dataqueue, 8); queue_insertElem(&dataqueue, 9); queue_insertElem(&dataqueue, 10); queue_insertElem(&dataqueue, 10); printf("dataqueue.data is %d\n", dataqueue.tail); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); queue_deletElem(&dataqueue); printf("dataqueue.head is %d\n",dataqueue.head); while (1); return 0; }




实用价值: 书堆 我放书 添加task 设备驱动 一直添加 我不减
问题点: 在于出队列 顺序表出现假溢出问题

技术分享图片

数据结构之顺序队列实现

原文:https://www.cnblogs.com/nowroot/p/12650019.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!