线性队列
来源:互联网 发布:混合视频矩阵 编辑:程序博客网 时间:2024/04/30 08:37
这里的线性结构实际上指的就是连续内存的意思,只不过使用“线性”这个词显得比较专业而已。前面一篇博客介绍了现象结构的处理方法,那么在这个基础之上我们是不是添加一些属性形成一种新的数据结构类型呢?答案是肯定的,队列便是其中的一种。
队列的性质很简单:
(1)队列有头部和尾部
(2)队列从尾部压入数据
(3)队列从头部弹出数据
那么连续内存下的队列是怎么实现的呢?
a)设计队列数据结构
- typedef struct _QUEUE_NODE
- {
- int* pData;
- int length;
- int head ;
- int tail;
- int count;
- }QUEUE_NODE;
- QUEUE_NODE* alloca_queue(int number)
- {
- QUEUE_NODE* pQueueNode;
- if( 0 == number)
- return NULL;
- pQueueNode = (QUEUE_NODE*)malloc(sizeof(QUEUE_NODE));
- assert(NULL != pQueueNode);
- memset(pQueueNode, 0, sizeof(QUEUE_NODE));
- pQueueNode->pData = (int*)malloc(sizeof(int) * number);
- if(NULL == pQueueNode->pData){
- free(pQueueNode);
- return NULL;
- }
- pQueueNode->length = number;
- return pQueueNode;
- }
- STATUS delete_queue(const QUEUE_NODE* pQueueNode)
- {
- if(NULL == pQueueNode)
- return FALSE;
- assert(NULL != pQueueNode->pData);
- free(pQueueNode->pData);
- free((void*)pQueueNode);
- return TRUE;
- }
- STATUS insert_queue(QUEUE_NODE* pQueueNode, int value)
- {
- if(NULL == pQueueNode)
- return FALSE;
- if(pQueueNode->length == pQueueNode->count)
- return FALSE;
- pQueueNode->pData[pQueueNode->tail] = value;
- pQueueNode->tail = (pQueueNode->tail + 1) % pQueueNode->length;
- pQueueNode->count ++;
- return TRUE;
- }
- STATUS get_queue_data(QUEUE_NODE* pQueueNode, int* value)
- {
- if(NULL == pQueueNode || NULL == value)
- return FALSE;
- if(0 == pQueueNode->count)
- return FALSE;
- *value = pQueueNode->pData[pQueueNode->head];
- pQueueNode-> pData[pQueueNode->head] = 0;
- pQueueNode-> count --;
- pQueueNode->head = (pQueueNode->head + 1) % pQueueNode->length;
- return TRUE;
- }
- int get_total_number(const QUEUE_NODE* pQueueNode)
- {
- if(NULL == pQueueNode)
- return 0;
- return pQueueNode->count;
- }
- int get_total_number(const QUEUE_NODE* pQueueNode)
- {
- if(NULL == pQueueNode)
- return 0;
- return pQueueNode->length;
0 0
- 线性队列
- 队列 线性队列
- c 队列线性存储
- 线性队列操作
- 线性结构_队列
- 线性队列操作
- 线性结构 循环队列
- 【数据结构】线性循环队列
- 数据结构之线性队列
- 线性表、栈、队列
- 线性表、栈、队列
- 线性表(栈/队列)
- 数据结构-线性结构-队列
- 队列的线性存储
- 线性表、栈、队列
- 数据结构之线性队列
- 线性队列的改变
- 线性结构---队列
- Docker系列三
- iOS 应用内付费
- 取反循环,不知道结束次数用do-while语句
- 心上莲花:中医三五事
- 程序猿之华丽转身:写Paper也很重要
- 线性队列
- 算法设计题1.16-绪论-第1章-《数据结构习题集》-严蔚敏吴伟民版
- Ubuntu下PyDev安装
- 蓝懿 iOS 技术交流和心得分享 12.22
- hadoop RPC过程1
- Java中的类型转换和进制转换
- PHP后台技术-数据库对象技术PDO(一)
- 芒果iOS开发之App Transport Security has blocked a cleartext HTTP (http://) resource load since it is inse
- CST2011的破解