数据结构实验3

1、建立顺序循环队列,并在顺序循环队列上实现入队、出队基本操作。

(1)根据输入的队列长度n和各元素值建立一个循环顺序表表示的队列(循环队列),并输出队列中各元素值。

(2)将数据元素e入队,并输出入队后的队列中各元素值。

(3)将循环队列的队首元素出队,并输出出队元素的值和出队后队列中各元素值。

#include <stdio.h>
#include <stdlib.h>#define MAX_SIZE 100typedef struct {int data[MAX_SIZE];int front;  // 队首指针int rear;   // 队尾指针
} CircularQueue;// 初始化队列
void initQueue(CircularQueue *queue) {queue->front = 0;queue->rear = 0;
}// 判断队列是否为空
int isEmpty(CircularQueue *queue) {return queue->front == queue->rear;
}// 判断队列是否已满
int isFull(CircularQueue *queue) {return (queue->rear + 1) % MAX_SIZE == queue->front;
}// 入队
void enqueue(CircularQueue *queue, int e) {if (isFull(queue)) {printf("队列已满,无法入队。\n");return;}queue->data[queue->rear] = e;queue->rear = (queue->rear + 1) % MAX_SIZE;
}// 出队
int dequeue(CircularQueue *queue) {if (isEmpty(queue)) {printf("队列为空,无法出队。\n");return -1;}int e = queue->data[queue->front];queue->front = (queue->front + 1) % MAX_SIZE;return e;
}// 输出队列中的元素
void printQueue(CircularQueue *queue) {if (isEmpty(queue)) {printf("队列为空。\n");return;}printf("队列中的元素为:");int i = queue->front;while (i != queue->rear) {printf("%d ", queue->data[i]);i = (i + 1) % MAX_SIZE;}printf("\n");
}int main() {CircularQueue queue;initQueue(&queue);int n;printf("请输入队列长度n:");scanf("%d", &n);printf("请输入队列中的元素值:");for (int i = 0; i < n; i++) {int value;scanf("%d", &value);enqueue(&queue, value);}printQueue(&queue);int e;printf("请输入要入队的元素值:");scanf("%d", &e);enqueue(&queue, e);printQueue(&queue);int dequeued = dequeue(&queue);if (dequeued != -1) {printf("出队元素的值为:%d\n", dequeued);}printQueue(&queue);return 0;
}

2、请利用所学栈的知识设计一个进制转换器,实现十进制到八进制的转换

#include <stdio.h>
#include <stdlib.h>#define MAX_SIZE 100typedef struct {int data[MAX_SIZE];int top;
} Stack;// 初始化栈
void initStack(Stack *stack) {stack->top = -1;
}// 判断栈是否为空
int isEmpty(Stack *stack) {return stack->top == -1;
}// 判断栈是否已满
int isFull(Stack *stack) {return stack->top == MAX_SIZE - 1;
}// 入栈
void push(Stack *stack, int e) {if (isFull(stack)) {printf("栈已满,无法入栈。\n");return;}stack->data[++stack->top] = e;
}// 出栈
int pop(Stack *stack) {if (isEmpty(stack)) {printf("栈为空,无法出栈。\n");return -1;}return stack->data[stack->top--];
}// 十进制到八进制转换
void decimalToOctal(int decimal) {Stack stack;initStack(&stack);while (decimal > 0) {int remainder = decimal % 8;push(&stack, remainder);decimal /= 8;}printf("八进制数为:");while (!isEmpty(&stack)) {printf("%d", pop(&stack));}printf("\n");
}int main() {int decimal;printf("请输入一个十进制数:");scanf("%d", &decimal);decimalToOctal(decimal);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/122830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jest和Mocha对比:两者之间有哪些区别?

什么是单元测试&#xff1f; 所谓单元测试&#xff0c;是对软件中单个功能组件进行测试的一种软件测试方式&#xff0c;其目的是确保代码中的每一个基本单元都能正常运行。因此&#xff0c;开发人员在应用程序开发的整个过程&#xff08;即代码编写过程&#xff09;中都需要进行…

单例模式及其使用场景

单例模式&#xff08;Singleton&#xff09;&#xff1a;指在一个系统中某个类只存在一个实例&#xff0c;类中自行实例化&#xff0c;实例向该系统提供统一的访问接口。 单例模式有两种表现形式&#xff0c;饿汉式&#xff1a;类加载时&#xff0c;就进行实例化&#xff1b;懒…

【目标检测】Visdrone数据集和CARPK数据集预处理

之前的博文【目标检测】YOLOv5跑通VisDrone数据集对Visdrone数据集简介过&#xff0c;这里不作复述&#xff0c;本文主要对Visdrone数据集和CARPK数据集进行目标提取和过滤。 需求描述 本文需要将Visdrone数据集中有关车和人的数据集进行提取和合并&#xff0c;车标记为类别0&…

在 Windows 用 Chrome System Settings 设置代理

在 Windows 用 Chrome System Settings 设置代理 贴心提示&#xff1a;在设置代理之前&#xff0c;请确保您已经安装了 浏览器。 &#x1f527; 设置代理的详细步骤如下&#xff1a; 打开 浏览器&#xff0c;输入 //settings/system 并回车。 在「系统和网络设置」页面中&am…

vue源码分析(四)——vue 挂载($mount)的详细过程

文章目录 前言一、使用RuntimeCompiler解析$mount的原因二、$mount 解析的详细过程1.解析挂载的#app执行了vm.$mount2. 通过$mount方法执行以下文件的mount方法3. 执行util工具文件夹中的query方法4. 执行query方法后返回$mount方法判断el是否是body5. 判断!options.render&…

Android原生项目集成uniMPSDK(Uniapp)遇到的报错总结

uni小程s序SDK 集成到Android原生项目:老项目中用到的库较多&#xff0c;会出现几种冲突问题&#xff0c;总结如下&#xff1a; 报错1&#xff1a; Execution failed for task :app:processDebugManifest. > Manifest merger failed with multiple errors, see logs Andro…

初识HTML超文本标记语言

文章目录 前端简介引入前端三剑客什么是HTML&#xff1f;超文本传输协议前戏HTTP超文本传输协议1.什么是HTTP协议2.四大特性3.数据格式4.响应状态码 基于HTTP协议搭建HTMLHTML简介 前端简介 引入 前端&#xff1a;与用户直接打交道的操作界面都可以称之为前端(那些炫酷的页面)…

【每日一题】补档 CF487B. Strip | 数据结构杂烩 -> 单调队列 | 困难

题目内容 原题链接 给定一个长度为 n n n 的数组&#xff0c;将这个数组进行拆分成若干个连续子数组&#xff0c; 使得每个子数组的最大值减去最小值小于等于 s s s &#xff0c; 且每个子数组的长度大于等于 l e n len len 。 问最少可以拆分成多少个连续子数组&#xff0…

计算机视觉注意力机制小盘一波 (学习笔记)

将注意力的阶段大改分成了4个阶段 1.将深度神经网络与注意力机制相结合&#xff0c;代表性方法为RAM ⒉.明确预测判别性输入特征&#xff0c;代表性方法为STN 3.隐性且自适应地预测潜在的关键特征&#xff0c;代表方法为SENet 4.自注意力机制 通道注意力 在深度神经网络中…

TypeScript - 枚举 - 数字枚举

什么是枚举 枚举就是有固定的元素的一个对象。 对象的元素可以直接列举出来。 什么是数字枚举 数字枚举&#xff0c;就是我们通俗意义上的枚举类型。 定义的元素是与数字一一对应的。 特点 默认从0开始&#xff0c;步长为1 递增 可以指定值&#xff0c;后面的以步长为1&#xf…

Android问题笔记四十一:JNI NewStringUTF错误的几种解决方案

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

【游戏开发】【心法】游戏设计心法系列1-以玩法为核心去设计游戏

游戏的本质 游戏的魔法在于寻找隐藏事物之间的联系。 游戏的魅力在于随着玩家逐渐发现并了解游戏世界的方方面面&#xff0c;他会得到一种丰富而深厚的体验。 挑战&#xff0c;竞争和互动是游戏玩法的三大要素。 规则&#xff0c;过程&#xff0c;目标则是游戏内容的要素。 如…

学生成绩管理系统(c语言)

目录 题目需求 程序编写 定义学生结构体: 选择菜单: 文件读入结构体变量: 结构体变量写入文件: 输入检查: 输入记录: 打印记录: 修改记录: 删除记录: 查找信息: 最终代码: 调试: 软件准备: 测试数据: 直接复制测试数据版本: 输入,打印输出…

合并两个有序链表(C++)

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&#xff1…

取Dataset子集(pytorch)

取Dataset子集--pytorch 1. why2. how3. example 1. why 我们在调试深度学习代码时&#xff0c;常常会遇到数据集太大&#xff0c;导致调试浪费时间的情况&#xff0c;这种情况下&#xff0c;将数据集中的一个子集拿出来用于调试代码&#xff0c;调试成功在用完整的数据集运行…

从InnoDB索引的数据结构,去理解索引

从InnoDB索引的数据结构&#xff0c;去理解索引 1、InnoDB 中的 BTree1.1、BTree 的组成1.2、BTree中的数据页 2、聚簇索引2.1、聚簇索引的特点2.2、聚簇索引的结构示例2.3、聚簇索引的优缺点 3、非聚簇索引3.1、非聚簇索引结构示例3.2、关于回表3.3、聚簇索引和非聚簇索引的区…

快速排序算法

快速排序一&#xff1a;给定一个数组&#xff0c;进行排序&#xff0c;要求排序完成之后&#xff0c;小于数组最后一个元素的数据全部在它的左边&#xff0c;大于它的全部在它的右边&#xff0c;左右两边内部不要求有序&#xff0c;比如原数组是[5, 6, 3, 1, 2, 3]排序完之后:[…

数据特征工程 | 基于PCA算法(Python)

随着数据量的不断增加和数据维度的不断扩展,如何进行高效的数据降维处理成为了一个热门话题。在数据分析领域,PCA算法作为一种常用的数据降维方法,可以对多个特征进行降维,提高计算效率和降低存储空间需求。本文以波士顿房价数据集为例,探讨如何利用PCA算法对房屋价格进行…

基本微信小程序的外卖点餐订餐平台

项目介绍 餐饮行业是一个传统的行业。根据当前发展现状&#xff0c;网络信息时代的全面普及&#xff0c;餐饮行业也在发生着变化&#xff0c;单就点餐这一方面&#xff0c;利用手机点单正在逐步进入人们的生活。传统的点餐方式&#xff0c;不仅会耗费大量的人力、时间&#xf…