习题3.12 另类循环队列 (20分)

理解

理解:

实现循环队列

队首Q->Front=(Q->Front+1)%Q->MaxSize;

队尾Q->Rear=(Q->Front+Q->Count)%Q->MaxSize;

删除操作:移动队首,计数器Count--;

插入操作:先执行计数器Count++,在执行向后移动队尾(这里也可以先移动队尾,后执行Count++,知识删除操作取出数的下标要变化);

注意:队首默认为0;

bool AddQ(Queue Q,ElementType X)
{
	if(Q->MaxSize==Q->Count)
	{
		printf("Queue Full\n");
		return false;
	}
	Q->Count++;
	Q->Data[(Q->Front+Q->Count)%Q->MaxSize]=X;
	return true;
}
ElementType DeleteQ(Queue Q)
{
	if(Q->Count==0)
	{
		printf("Queue Empty\n");
		return ERROR;
	}
	Q->Count--;
	Q->Front=(Q->Front+1)%Q->MaxSize;
	return Q->Data[Q->Front];
}
时间: 2024-10-13 22:03:57

习题3.12 另类循环队列 (20分)的相关文章

习题11-8 单链表结点删除 (20分)

习题11-8 单链表结点删除 (20分) 本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中所有存储了某给定值的结点删除.链表结点定义如下: struct ListNode { int data; ListNode *next; }; 函数接口定义: struct ListNode *readlist(); struct ListNode *deletem( struct ListNode *L, int m ); 函数readlist从标准输入读入一系列正整数,按照读入顺序建立单链表

5-31 字符串循环左移 (20分)

输入一个字符串和一个非负整数N,要求将字符串循环左移N次. 输入格式: 输入在第1行中给出一个不超过100个字符长度的.以回车结束的非空字符串:第2行给出非负整数N. 输出格式: 在一行中输出循环左移N次后的字符串. 输入样例: Hello World! 2 输出样例: llo World!He #include <stdio.h> #include <stdlib.h> int main() { int N; int length = 0; char a[100],b[100];

习题4-2 求幂级数展开的部分和 (20分)

已知函数e?x??可以展开为幂级数1.现给定一个实数x,要求利用此幂级数部分和求e?x??的近似值,求和一直继续到最后一项的绝对值小于0.00001. 输入格式: 输入在一行中给出一个实数0. 输出格式: 在一行中输出满足条件的幂级数部分和,保留小数点后四位. 输入样例: 1.2 输出样例: 3.3201 #include<stdio.h> #include<math.h> #define eps 1e-5 //0.00001 int main(void) { double x,s

20.10 for循环;20.11 while循环(上);20.12 while循环(下);20.13 break跳出循环;20.14 ;20.15

20.10 for循环 案例1 1. 编写for循环脚本:计算1到100所有数字和: [[email protected] ~]# vi for1.sh 添加内容: #!/bin/bash sum=0 for i in `seq 1 100` do echo "$sum + $i" sum=$[$sum+$i] echo $sum done echo $sum 2. 执行for1.sh脚本: [[email protected] ~]# sh for1.sh 案例2 1. 文件列表循环

20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本

20.10 for循环 ?语法:for 变量名 in 条件; do -; done ? 案例1 1+2+3..+100的和 #!/bin/bash sum=0 for i in `seq 1 100` // seq 1到100个数字 do sum=$[$sum+$i] echo $i done echo $sum sum 第一次作为变量的时候,是0:当进入for循环里面的时候,每运算一次,sum变量就会改变一次,直至$i 结束:最后输出结果 $sum ? 案例2 文件列表循环 #!/bin/ba

20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20

20.10 for循环语法:for 变量名 in 条件; do -; done案例1#!/bin/bashsum=0for i in seq 1 100do? ? sum=$[$sum+$i]? ? echo $idoneecho $sum文件列表循环#!/bin/bashcd /etc/for a in ls /etc/do? ? if [ -d $a ]? ? then? ?? ? ls -d $a? ? fidone 20.11/20.12 while循环语法 while 条件; do -

B1008 数组元素循环右移问题 (20分)

B1008 数组元素循环右移问题 (20分) 思路 1 2 3 4 5 6 5 6 1 2 3 4 6个数,循环右移2位. 也可以理解为 先翻转 6 5 4 3 2 1 然后再两部分,分别翻转 5 6 1 2 3 4 AC代码 #include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { int n, m; cin >> n >&

数据结构Java实现07----队列:顺序队列&amp;顺序循环队列、链式队列、顺序优先队列

数据结构Java实现07----队列:顺序队列&顺序循环队列.链式队列.顺序优先队列 一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其另一端进行删除操作. 队列中允许进行插入操作的一端称为队尾,允许进行删除操作的一端称为队头.队列的插入操作通常称作入队列,队列的删除操作通常称作出队列. 下图是一个依次向队列中插入数据元素a0,a1,...,an-

循环队列的一种实现模型

前段时间在知乎上看到这样一个小题目: 用基本类型实现一队列,队列要求size是预先定义好的的.而且要求不可以使用语言自带的api,如C++的STL.普通的实现很简单,但是现在要求要尽可能的时间和空间复杂度的优化,要和语言自带的api比较时间和空间.这个队列还要支持如下的操作: constructor: 初始化队列 enqueue:入队 dequeue:出队 队列是一种基本的数据结构,在平常的应用中十分广泛,多数情况队列都是用链表实现的.但是对于本题而言,用链表实现就有这样一个问题:由于每个结点都