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

数据结构实验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;
}

相关文章:

  • 树与二叉树(考研版)
  • 基于Kubesphere容器云平台物联网云平台Devops实践
  • RabbitMQ的交换机(原理及代码实现)
  • WPF:自定义按钮模板
  • python基础语法(十一)
  • 研发效能认证学员作品:快速进行持续集成应用实践丨IDCF
  • 使用pycharm远程连接到Linux服务器进行开发
  • ES6中数值扩展
  • 论文-分布式-并发控制-并发控制问题的解决方案
  • 【面试经典150 | 栈】最小栈
  • 2023辽宁省赛E
  • 【QT】其他常用控件1
  • 【网络协议】聊聊UDP协议
  • 从InnoDB索引的数据结构,去理解索引
  • 调试记录 单片机GD32F103C8T6(兆易创新) 程序烧写完成但是没有现象 (自己做的板子)
  • SegmentFault for Android 3.0 发布
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • [译] React v16.8: 含有Hooks的版本
  • Cookie 在前端中的实践
  • docker容器内的网络抓包
  • Git同步原始仓库到Fork仓库中
  • java8 Stream Pipelines 浅析
  • JavaScript创建对象的四种方式
  • Js基础知识(一) - 变量
  • Python中eval与exec的使用及区别
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • 从零开始在ubuntu上搭建node开发环境
  • 想使用 MongoDB ,你应该了解这8个方面!
  • # C++之functional库用法整理
  • (9)目标检测_SSD的原理
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (利用IDEA+Maven)定制属于自己的jar包
  • (强烈推荐)移动端音视频从零到上手(下)
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)项目管理杂谈-我所期望的新人
  • *Django中的Ajax 纯js的书写样式1
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • ... 是什么 ?... 有什么用处?
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 回调、接口回调、 委托
  • .Net 垃圾回收机制原理(二)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .Net语言中的StringBuilder:入门到精通
  • @staticmethod和@classmethod的作用与区别
  • [100天算法】-目标和(day 79)
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [20190416]完善shared latch测试脚本2.txt
  • [Android 13]Input系列--获取触摸窗口
  • [Angular] 笔记 7:模块
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • [AutoSAR 存储] 汽车智能座舱的存储需求