当前位置: 首页 > news >正文

顺序循环队列

顺序循环队列

队头插入元素,队尾删除元素

本来应该判空和判断是否存满的条件都是:队头 = 队尾,但这样就没办法区分了,所以,就牺牲一个空间(比如长度为10,但只能存9个),这样判断是否存满就变成了队头 = (队尾+1)% 队列长度。

顺序循环队列判空条件:队头 = 队尾

顺序循环队列判断是否存满条件:队头 = (队尾+1)% 队列长度

1.定义结构体

2.创建
SeqQueue *CreateSeqQueue(int MaxLen)
{SeqQueue *pTmpQueue = NULL;pTmpQueue = malloc(sizeof(SeqQueue));if (NULL == pTmpQueue){return NULL;}pTmpQueue->Head = pTmpQueue->Tail = 0;pTmpQueue->Len = MaxLen;pTmpQueue->pData = malloc(sizeof(DataType) * MaxLen);if (NULL == pTmpQueue->pData){return NULL;}return pTmpQueue;
}
3.判空
int IsEmptySeqQueue(SeqQueue *pTmpQueue)
{return pTmpQueue->Head == pTmpQueue->Tail ? 1 : 0;
}

4.判断是否存满

int IsFullSeqQueue(SeqQueue *pTmpQueue)
{return (pTmpQueue->Tail + 1) % pTmpQueue->Len == pTmpQueue->Head ? 1 : 0;
}
5.入队
int EnterSeqQueue(SeqQueue *pTmpQueue, DataType TmpData)
{if (IsFullSeqQueue(pTmpQueue)){return -1;}pTmpQueue->pData[pTmpQueue->Tail] = TmpData;pTmpQueue->Tail = (pTmpQueue->Tail + 1) % pTmpQueue->Len;return 0;
}
6.出队
DataType QuitSeqQueue(SeqQueue *pTmpQueue)
{DataType TmpData;TmpData = pTmpQueue->pData[pTmpQueue->Head];pTmpQueue->Head = (pTmpQueue->Head + 1) % pTmpQueue->Len;return TmpData;
}
7.销毁
int DestroySeqQueue(SeqQueue **ppTmpQueue)
{free((*ppTmpQueue)->pData);free(*ppTmpQueue);*ppTmpQueue = NULL;return 0;
}


http://www.mrgr.cn/news/15846.html

相关文章:

  • JAVA—多线程
  • 平安养老险广西分公司:国家金融监督管理总局广西监管局一行到访平安大厦开展调研
  • 治愈系风景视频素材下载网站有哪些?令人治愈美景素材库网站分享
  • Java 入门指南:初识 Java 并发编程
  • 如何使用SpringCloudAliBaba技术栈搭建微服务环境
  • cloudways相关
  • 优化农业项目流程 10款实用管理系统推荐
  • CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!
  • 自然语言处理系列四十七》Elasticsearch搜索引擎》Elasticsearch代码实战
  • Polya
  • 打卡第60天------图论
  • Java性能优化传奇之旅--Java万亿级性能优化之电商平台高峰时段性能大作战:策略与趋势洞察
  • 3160. 所有球里面不同颜色的数目(java)
  • 如何永久解决 Memory overcommit must be enabled! 警告问题
  • 【智能算法改进】多策略融合的改进黑猩猩搜索算法及其应用
  • Java虚拟机(JVM)内存管理
  • 机器学习——决策树模型
  • 梧桐数据库(WuTongDB):哈希表原理、实现方法、代码例子和应用场景
  • 【需要学会的Java知识 1】Java的Map增强
  • 深度强化学习算法(六)(附带MATLAB程序)