博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用数组实现队列操作
阅读量:3947 次
发布时间:2019-05-24

本文共 1660 字,大约阅读时间需要 5 分钟。

               

利用数组实现队列操作

本文博客链接:,作者:jdh,转载请注明.

说明:

项目中有30台分机,每台分机都可能发出请求,主机需要按顺序响应这些请求.这是一个FIFO先进先出的队列结构,但主机的CPU是单片机,用链表实现占用资源太多,所以尝试用数组实现.

思路:

定义1个数组,用下标表示分机号,用其中的值表示在队列中的位置.

源代码:

#include 
//队列长度#define LEN 30int arr[LEN];//初始化队列void init_list(){ int i = 0; for (i = 0;i < LEN;i++) {  arr[i] = 0; }}//获得指定标号的队列位置int get_pos(int index){ return arr[index];}//获得队首标号int get_head(){ int i = 0; int index = 0;  for(i = 1;i < LEN;i++) {  if (get_pos(index) == 0 && get_pos(i) > 0)  {   index = i;   continue;  }    if (get_pos(i) != 0 && get_pos(i) < arr[index])  {   index = i;  } }  return index;}//获得队尾标号int get_end(){ int i = 0; int index = 0;  for(i = 1;i < LEN;i++) {  if (arr[i] > arr[index])  {   index = i;  } }  return index;}//检查队列中是否有对应标号//有返回1,没有返回0int check_in(int index){ if (arr[index] > 0) {  return 1; } else {  return 0; }}//进栈int push(int index){ int i = 0;  //检查是否已经在队列中 if (check_in(index) != 0) {  return 0; }  //获得队尾标号 i = get_end(); //插入队尾 arr[index] = get_pos(i) + 1;  return 1;}//出栈void pop(){ int i = 0;  //获得队首标号 i = get_head(); //出栈 arr[i] = 0; //其他标号前移1位 for (i = 0;i < LEN;i++) {  if (get_pos(i) > 1)  {   arr[i]--;  } }}int main(){ //测试操作 //初始化队列 init_list(); //入栈 push(3); push(5); push(7); push(9); push(25); //输出队首标号 printf("队首是%d\n",get_head()); //输出队尾标号 printf("队尾是%d\n",get_end()); //出栈 pop(); //输出队首标号 printf("队首是%d\n",get_head()); //输出队尾标号 printf("队尾是%d\n",get_end()); //出栈 pop(); //输出队首标号 printf("队首是%d\n",get_head()); //输出队尾标号 printf("队尾是%d\n",get_end());  return 0;}

输出:

队首是3

队尾是25
队首是5
队尾是25
队首是7
队尾是25
Terminated with return code 0
Press any key to continue ...

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!

你可能感兴趣的文章
ConcurrentHashMap 1.7和1.8的区别
查看>>
try-catch-finally执行顺序及语句中对变量进行赋值的问题
查看>>
阻塞锁与自旋锁
查看>>
Java中的<< 和 >> 和 >>> 详细分析
查看>>
Java中字节Byte和位Bit的关系及最小值最大值表示
查看>>
spring启动时只执行一次的方法实现
查看>>
es分片分配问题及配置总结
查看>>
【面试官:select语句和update语句分别是怎么执行的
查看>>
redis-benchmark压力测试使用
查看>>
Java8 中 List 转 Map(Collectors.toMap) 使用技巧
查看>>
JUC体系图
查看>>
i++
查看>>
尚硅谷netty笔记
查看>>
mysql回表查询,聚集索引与普通索引
查看>>
乐观锁与悲观锁
查看>>
[数据库]事务、并发、数据库锁
查看>>
单例设计模式
查看>>
装饰设计模式和代理设计模式的区别
查看>>
Struts2中值栈
查看>>
Hash算法冲突解决方法分析
查看>>