-
2021-11-29 13:12:53
若循环队列以数组Q【0,...,m-1】存储结构,变量rear表示循环队列中的队尾元素的实际位置,其移动按rear=(rear+1)/MODm,变量length表示当前循环队列中的元素个数,则循环队列的队首元素的实际位置是((rear-length+1+m)/MODm)
更多相关内容 -
假设以数组Q[m]存放循环队列中的元素,同时设置一个标志tag,以tag=0和tag=1来区别在队头指针(front)和队尾...
2018-10-15 14:09:40*题目:假设以数组Q[m]存放循环队列中的元素,同时设置一个标志tag,以tag=0和tag=1来区别在队头指针(front)和队尾指针(rear)相等时, * 队列状态为"空"还是"满"。 * 试编写与此结构相应的插入.../*数据结构与算法-第三章栈和队列课后习题 *课本第85页3.7 *题目:假设以数组Q[m]存放循环队列中的元素,同时设置一个标志tag,以tag=0和tag=1来区别在队头指针(front)和队尾指针(rear)相等时, * 队列状态为"空"还是"满"。 * 试编写与此结构相应的插入(enqueue)和删除(dequeue)算法。 *编译环境:VC 6.0 */ #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define overflow -1 #define MAXSIZE 10 typedef int qelemType; int count=0; typedef struct { qelemType q[MAXSIZE]; int tag; int head,rear; }sqqueue; void initQueue(sqqueue &queue)//队列初始化 { queue.head=0; queue.rear=0; queue.tag=0; } int enqueue(sqqueue &queue,qelemType e) { if(count==MAXSIZE) queue.tag=1; if(queue.tag==1 && queue.head==queue.rear)//即队列已满 return ERROR; else { queue.q[queue.rear]=e; queue.rear=(queue.rear+1)%MAXSIZE; count++; } return OK; } int dequeue(sqqueue &queue,qelemType &e) { if(count==0) queue.tag=0; if(queue.tag==0 && queue.head==queue.rear) return ERROR; else { e=queue.q[queue.head]; queue.head=(queue.head+1)%MAXSIZE; count--; } return OK; } int queuelen(sqqueue queue) { return (queue.rear-queue.head+MAXSIZE)%MAXSIZE; } int main() { sqqueue queue1; initQueue(queue1); int num; for(int i=12;i>=1;i--) { printf("ATTENTION---Queue's length=%d,",queuelen(queue1)); if(enqueue(queue1,i)) printf("成功插入元素%d!\n",i); else { printf("队列已满!\n"); break; } } printf("\n\n"); for(int k=1;k<=14;k++) { printf("ATTENTION---Queue's length=%d,",queuelen(queue1)); if(dequeue(queue1,num)) printf("成功删除元素%d!\n",num); else { printf("队列已空!\n"); break; } } return 0; }
-
假设以数组Q[m]存放循环队列中的元素, 同时设置一个标志tag,以tag == 0和tag == 1来区别在队头指针(front)...
2018-12-16 00:18:42假设以数组Q[m]存放循环队列中的元素, 同时设置一个标志tag,以tag = 0 和 tag = 1来区别在队头指针(front)和队尾指针(rear)相等时,队列状态为“空”还是“满”。试设计与此结构相应的插入和删除算法,编写代码,并...题目
假设以数组Q[m]存放循环队列中的元素, 同时设置一个标志tag,以tag = 0 和 tag = 1来区别在队头指针(front)和队尾指针(rear)相等时,队列状态为“空”还是“满”。试设计与此结构相应的插入和删除算法,编写代码,并带入数据运行验证通过
#include<iostream> using namespace std; #define MaxSize 100 int tag; //以tag == 0和tag == 1来区别在队头指针(front)和队尾指针(rear)相等时,队列状态为"空"还是"满" typedef struct{ int *base; int front; int rear; }Seq; int Init(Seq &L){ //初始化 L.base = new int[MaxSize]; L.front = L.rear = 0; tag = 0; return 1; } int Enter(Seq &L,int m){ //入队列 if(L.rear%MaxSize == L.front && tag == 1){ cout<<"队列已满!"; return 0; } L.base[L.rear] = m; L.rear = (L.rear+1)%MaxSize; if(L.rear == L.front)tag = 1; return 1; } int Out(Seq &L,int &m){ // 出队列 if(L.rear == L.front && tag == 0){ cout<<"队列空!"; return 0; } m = L.base[L.front]; L.front = (L.front+1)%MaxSize; if(L.rear == L.front)tag = 0; return 1; } int JudgeEmpty(Seq L){ if(L.rear == L.front && tag == 0){ cout<<"队列空!"; return 0; } } int JudgeFullness(Seq L){ if(L.rear%MaxSize == L.front && tag == 1){ cout<<"队列已满!"; return 0; } } int main(){ Seq S; int m; Init(S); Enter(S,4); Enter(S,5); Enter(S,7); Enter(S,6); Enter(S,8); for(int i = 0;i < 5;i++){ Out(S,m); cout<<m<<" "; } JudgeEmpty(S); return 0; }
参考资料:
《数据结构 C语言版 第2版》严蔚敏 李冬梅 吴伟民 -
用标志域表示队空队满状态的循环队列的综合操作
2015-05-18 17:31:34要求循环队列不损失一个空间全部都得到利用,设置一个标志域tag,以0和1来区分当队头与队尾指针相同时队列状态的空和满,试编写与此结构相对应的入队和出队操作。 -
VB数组_receiver6q_hurt2i2_partyvqr_vb数组例子_
2021-09-30 02:26:16随机产生20个学生的成绩0~100(包括0、100),统计各分数段人数,即0~59、60~69、70~79、80~89、90~100,显示统计结果。 -
js实现删除嵌套数组对象返回新数组
2019-12-26 15:15:30name: 'qqq' }, { id: '3', name: 'eee', children: [ { id: '4', name: 'rrr' }, { id: '5', name: 'ttt' } ] }, { id: '6', name: 'uuu' } ],删除id为4的数据后返回的新... -
浅谈shell数组的定义及循环
2021-01-20 16:30:06shell中数组的定义及遍历,先直接看...arrayXue[4]=q arrayXue[5]=r #打印数组长度 echo ${#arrayWen[@]} #for 循环遍历 for var in ${arrayWen[@]}; do echo $var done #while循环遍历 i=0 while [[ i -lt ${#array -
Qx:一组类似 LINQ 的 Q 扩展,用于处理承诺数组
2021-07-01 00:27:17##Usage 所有 Qx 数组方法都采用一个数组和一个回调函数,该函数对数组中的项目执行操作。 所有回调都接收两个参数; 项目及其索引。 如果数组包含承诺,Qx 将等待这些承诺完成并将它们的值传递给回调。 如果回调... -
数组指针、指针数组以及二位数组的深入解析
2020-09-05 01:43:30下面来讲讲多维数组与指针的关系。与普通数组一样,使用多维数组时,实际上将其自动转换为指向该数组第一个元素的指针 -
有一个用数组Q[1..m]表示的环形队列(先进先出,队尾进队头出),约定队列的容量为m,f为当前队头元素在...
2021-07-23 11:23:16有一个用数组Q[1…m]表示的环形队列(先进先出,队尾进队头出),约定队列的容量为m,f为当前队头元素在数组中的位置,r为队尾元素的后一位置(按顺时针方向)。若队列非空且未满,则计算队列中元素个数的公式应为 ? ...1. 题目
有一个用数组Q[1…m]表示的环形队列(先进先出,队尾进队头出),约定队列的容量为m,f为当前队头元素在数组中的位置,r为队尾元素的后一位置(按顺时针方向)。若队列非空且未满,则计算队列中元素个数的公式应为 ?
2. 题解
2.1 解法1
分情况讨论:
1.若f<r<=m, 则有r-f <m,即队尾没有超出边界,则为r-f
2. 若r<f<=m, r-f < 0, 即队尾超出边界m,那么应为m+r -f
综合两种情况,得到答案 (m+r-f) mod m2.2 解法2
注意数组C[1…m]下标从1开始,并且r为队尾元素的后一位置。
当r>f时,好说,队列的长度为r-f;
当r<f时,队列的长度分为两段,一段是m-f+1,一段是r-1,加在一起,队列长度为r-f+m;
当r=f时,队列长度可能为0也可能为m,实际编程时,会设置一个boolean型变量来区分。
因此通用的计算队列长度公式为:(r-f+m)%m3. 记住公式
# 队列中,队列满的条件是: (rear+1)%QueueSize=front; # 队列长度公式是: (rear-front+QueueSize)%QueueSize。
-
Q1064245.zip c#winform如何实现一维数组转二维数组并保存在某处
2020-04-18 15:13:45Q1064245.zip https://ask.csdn.net/questions/1064245 c#winform如何实现一维数组转二维数组并保存在某处 -
python 实现多维数组(array)排序
2020-12-20 11:22:12关于多维数组如何复合排序 如数组: >>> import numpy as np >>> data = np.array([[2,2,5],[2,1,3],[1,2,3],[3,1,4]]) >>>> data array([[2, 2, 5], [2, 1, 3], [1, 2, 3], [3, 1, 4]]) 将数组先按照第一列升序... -
将数组中指定数量的元素移动数组后面的实现代码
2020-09-05 05:10:12本篇文章是对将数组中指定数量的元素移动数组后面的实现代码进行了详细的分析介绍,需要的朋友参考下 -
TaguchiArray:该算法为正交(田口)数组提供输入:Q(级别数)和 N(因子数)。-matlab开发
2021-05-29 08:40:13该算法为正交(田口)数组提供输入:Q(级别数)和 N(因子数)。 输出是一个 M*N 数组,其中 M = Q^J,田口表的行和 J 满足方程 N= Q^(J-1) - 1)/(Q-1); 参考:Leung, Y.-W.; Yuping Wang,“一种正交遗传算法用于... -
CELL2FLOAT:将元胞数组转换为标量浮点数组(v4.0,2010 年 1 月)-matlab开发
2021-06-01 15:33:42CELL2FLOAT - 将元胞数组转换为标量浮点数组 M = CELL2FLOAT(C) 返回大小与元胞数组 C... [M,Q] = CELL2FLOAT(C, ..) 返回一个逻辑数组 Q,其中 C 的值为浮点数的逻辑 1 (true) 和其他地方的逻辑零 (false)。 例子: C -
C#实现输入10个数存入到数组中并求max和min及平均数的方法示例
2021-01-01 00:03:34本文实例讲述了C#实现输入10个数存入到数组中并求max和min及平均数的方法。分享给大家供大家参考,具体如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ... -
JavaScript实现将数组中所有元素连接成一个字符串的方法
2020-10-24 10:34:17主要介绍了JavaScript实现将数组中所有元素连接成一个字符串的方法,涉及javascript中采用join方法进行数组转化的技巧,非常具有实用价值,需要的朋友可以参考下 -
迅速确定php多维数组的深度的方法
2020-12-19 05:51:17例如有一个多维数组: 复制代码 代码如下: array( array( array(1,3,4), array( array( 1,2,3 ) ) ), array( array(1,2), array(1) ) ) 这个数组的深度就是5,那么如何快速的确定一个数组深度。 (PS:T不错的PHP Q... -
浅谈Vue为什么不能检测数组变动
2020-10-16 05:16:53主要介绍了浅谈Vue为什么不能检测数组变动,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
php修改数组键名的方法示例
2020-12-20 07:32:14本文实例讲述了php修改数组键名的方法。分享给大家供大家参考,具体如下: $ar = array( array(1 => 'a', 2 => 50, 3 => 60, 4 ... array(1 => 'c', 2 => 70, 3 => 80, 4 => 'quit', 5 => 'qqq', 6 => 'xxx', 7 => 'c -
数据结构 以数组的形式存储数据(c语言 干货满满)
2021-06-10 21:26:59今天又遇到两个有意思的题 我家来看看吧 以数组的形式存储数据(小明,21)(小花,17)(张三,20)(小红,16)(王二,18) 插入 (li's) -
JavaScript中数组slice和splice的对比小结
2020-11-24 11:10:23今天重温了一下Javascript,看到了数组的方法,其中有两个比较相似的方法——splice和splice,看着很像,就是多了一个p,但是用法却相当不一样。 在使用中,可以通过选择一个具有强语义表达性的 API 来减少混淆的... -
TanaStudy#java-study#Q167两数之和 II - 输入有序数组1
2022-07-25 14:18:52示例 2:输出:[1,3]示例 3:输出:[1,2]提示:numbers 按 非递减顺序 排列仅存在一个有效答案Related Topics数组双指针二分查找。 -
c语言指针数组函数练习(含参考答案).doc
2020-12-16 10:28:06作 业使用指针数组函数完成 1. 编写一个通用函数该函数可以实现判断一个含有五位数字的整数是否是回文数回文数的含义是从左向右与从右向左看数是相同的如23732是回文数而23564则不是编写主程序调用该函数实现求所有5... -
Java中数组在内存中存放原理的讲解
2020-08-26 03:07:35今天小编就为大家分享一篇关于Java中数组在内存中存放原理的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 -
动态数组求交集并集.rar
2020-03-13 16:21:43利用指针来实现动态数组,求两个集合的交集和并集。(要求用动态数组来实现)依次分别输入数组A、B长度,并输入A,B中元素,即可得到交集并集 -
一维数组PPT
2018-05-29 16:38:14数组是具有相同类型的一组数据的集合。例如,球类的集合——足球、篮球、乒乓球等;在程序设计中,可以将这些集合称之为数组。数组中的每个元素具有相同的数据类型。在Java中同样将数组看做是一个对象,虽然基本数据...
收藏数
417,241
精华内容
166,896