队列。。。

目的:

1.掌握队列存储结构的表示和实现方法。

2.掌握队列的入队和出队等基本操作的算法实现。

3.了解队列在解决实际问题中的简单应用。

要求:

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

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

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

(4)根据输入的队列长度和各元素值建立一个链队列,并输出入队后队列中的各个元素值。

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

(6)将对头元素出队,并输出入队后队列中的各个元素值。

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

2.建立链队列,并在链队列上实现入队、出队基本操作。

#include <iostream>

using namespace std;

#define maxsize 100

typedef struct{

int *base;

 int front;

 int rear;

}Squ;

Squ k;//循环队列定义

typedef struct QNode {

    int data;

    struct QNode *next;

} QNode, *QueuePtr;

// 定义链队列结构体

typedef struct {

    QueuePtr front; // 队头指针

    QueuePtr rear;  // 队尾指针

} LinkQueue;

LinkQueue Q;

void initxh(Squ*k)//初始循环队列

{

    k->base=new int[maxsize];

    k->front=k->rear=0;

    return ;

}

void creatxh(int n,Squ *k)//建立循环队列

{

     int a;

    printf("输入循环队列的元素:");

    for(int i=0;i<n;i++)

    {

       scanf("%d",&a);

       k->base[k->rear]=a;

       k->rear=(k->rear+1)%maxsize;

    }

    printf("循环队列中的元素为:");

     for(int i=0;i<k->rear;i++){

     printf("%d ", k->base[i]);

     }

}

void chaxh(int e1,Squ*k)//插入元素到循环队列

{

    if((k->rear+1)%maxsize==k->front)

            return ;

             k->base[k->rear]=e1;

       k->rear=(k->rear+1)%maxsize;

        printf("插入后循环队列中的元素为:");

     for(int i=0;i<k->rear;i++){

     printf("%d ", k->base[i]);

     }

}

void chuxh(Squ*k)//将循环队列队头元素出队

{

    int b;

      if((k->rear+1)%maxsize==k->front)

            return ;

            b=k->base[k->front];

            printf("出队元素值为:");

            printf("%d",b);

              printf("\n");

            k->front=(k->front+1)%maxsize;

              printf("出队后队列各元素值");

             for(int i=k->front;i<k->rear;i++){

               printf("%d ", k->base[i]);

     }

}

// 初始化链队列

void initqueue(LinkQueue *Q)

{

    Q->front = Q->rear = (QueuePtr)malloc(sizeof(QNode));

    Q->front->next = NULL;

}

void creatls(int a,LinkQueue *Q)

{

    QueuePtr p=(QueuePtr)malloc(sizeof(QNode));

    p->data = a;

    p->next = NULL;

    Q->rear->next = p;

    Q->rear = p;

}

// 输出队列元素

void printqueue(LinkQueue Q)

{

    QueuePtr p = Q.front->next;

    while (p) {

        printf("%d ", p->data);

        p = p->next;

    }

    printf("\n");

}

void chals(int e2,LinkQueue *Q)

{

    QueuePtr p=(QueuePtr)malloc(sizeof(QNode));

    p->data = e2;

    p->next = NULL;

    Q->rear->next = p;

    Q->rear = p;

}

// 出队操作

int DeQueue(LinkQueue *Q) {

    if (Q->front == Q->rear) {

        return -1; // 队列为空,出队失败

    }

    QueuePtr p = Q->front->next;

    int e = p->data;

    Q->front->next = p->next;

    if (Q->rear == p)

    {

        Q->rear = Q->front;

    }

    free(p);

    return e;

}

int main()

{

//循环队列操作

    int n1;

    int e1;

    printf("循环队列长度为:");

    scanf("%d",&n1);

    initxh(&k);//初始化

   creatxh(n1,&k);//创建

   printf("\n");

   printf("插入循环队列的元素为:");

   scanf("%d",&e1);

   chaxh(e1,&k);//插入

    printf("\n");

   chuxh(&k);//出队

//链队列操作

      int n2;

      int e2;

      int a;

      printf("\n");

      printf("链队列长度为:");

      scanf("%d",&n2);

      initqueue(&Q);//初始化

      printf("输入链式队列元素为:");

      for (int i = 0; i < n2; i++)

     {

            scanf("%d",&a);

          creatls(a,&Q);//创建

      }

      printf("链式队列中元素为: ");

       printqueue(Q);

  printf("插入链式队列的元素为:");

  scanf("%d",&e2);

  chals(e2,&Q);

  printf("插入后链式队列的元素为:");

   printqueue(Q);

     int dequeuedElement = DeQueue(&Q);

    if (dequeuedElement != -1) {

        printf("对头元素为: %d\n", dequeuedElement);

        printf("出队后队列元素为: ");

        printqueue(Q);

    } else {

        printf("元素已空.\n");

    }

    return 0;

}

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

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

相关文章

Redis-使用 jedis 操作数据

文章目录 1、Jedis简介2、环境准备3、创建maven普通项目,导入如下依赖4、测试JAVA程序和Redis之间的通信 1、Jedis简介 "Jedis" 通常是作为 "Java Redis" 的缩写或简称来理解的。Java Embedded Data Structures Interface 表示 Java嵌入式数据结构接口 2、…

高德行政区查询-综合省市县三级选择跳转

一、需求&#xff1a; 需要使用高德地图进行省市县的一个选择&#xff0c;每选择一次就在地图上对选择的省市县进行定位并画出该区域的范围。 最终效果&#xff1a; 二、准备工作 高德的API的key&#xff1a;两种 三、完整页面代码 综合的是这两篇中的内容&#xff08;不…

19、删除链表的倒数第

1、题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 …

Vue3从入门到精通

文章目录 前言为什么选择Vue框架Vue是什么?为什么要学习Vue? Vue简介Vue API风格选项式API(Options API)组合式API(Composition API) Vue开发前的准备创建Vue项目 Vue项目目录结构![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0400cdd482704d4d9ffa8a3a6687b12…

什么是档案业务建设评价

档案业务建设评价是对档案管理机构或部门在档案业务建设方面进行的评估和考核。评价主要根据一定的评价标准和指标&#xff0c;对档案业务的各个方面进行综合评估&#xff0c;包括档案收集、整理、保管、利用等环节&#xff0c;以及档案管理机构的组织管理、技术能力等方面。 评…

猫头虎 分享已解决Error || API Rate Limits: HTTP 429 Too Many Requests

猫头虎 分享已解决Error || API Rate Limits: HTTP 429 Too Many Requests &#x1f42f; 摘要 &#x1f4c4; 大家好&#xff0c;我是猫头虎&#xff0c;一名专注于人工智能领域的博主。在AI开发中&#xff0c;我们经常会遇到各种各样的错误&#xff0c;其中API Rate Limits…

Redis-笔记(视频摘抄:哔哩哔哩博主(感谢!)-遇见狂神)

Redis&#xff08;缓存数据库&#xff0c;有效控制查询&#xff09;是非关系型数据库 缓存穿透、缓存击穿&#xff0c;缓存雪崩 Nosql概述 为什么使用NoSQL 大数据时代&#xff0c;那么什么是大数据&#xff0c;大数据就是一般的数据库没有办法进行分析处理&#xff0c;其中…

算法训练(leetcode)第十六天 | 530. 二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236. 二叉树的最近公共祖先

刷题记录 530. 二叉搜索树的最小绝对差递归非递归 501. 二叉搜索树中的众数*236. 二叉树的最近公共祖先 530. 二叉搜索树的最小绝对差 leetcode题目地址 如果是一颗普通树&#xff0c;则使用暴力求解法&#xff1a;遍历树并保存树种每个节点的值&#xff0c;排序后找差值最小…

【Unity】数据持久化 PlayerPrefs

1、PlayerPrefs是什么 是unity提供的可以用于存储读取玩家数据的公共类 2、存储相关 2.1 PlayerPrefs的数据存储类似于键值对存储一个键对应一个值 提供了存储3种数据的方法int float string 键: string类型 值: int float string对应3种API PlayerPrefs.SetInt("myAge…

Web 应用开源项目大全

Web 应用开源项目大全结合巴比达内网穿透实现WEB公开访问。 下面是一个Web应用的开源列表。没什么可说的&#xff0c;太疯狂了。尤其是Web 2.0那一堆。我不知道你怎么想&#xff0c;有些开源项目的源码写得挺不好的&#xff0c;尤其是性能方面。或许你会以为改一改他们就可以成…

java构造方法的重载

在java中&#xff0c;与普通方法一样&#xff0c;构造方法也可以重载&#xff0c;在一个类中可以定义多个构造方法&#xff0c;但是要求每个构造方法的参数类型或参数不同。在创建对象时&#xff0c;可以通过调用不同的构造方法为不同属性赋值。 示例代码如下 class Student5…

全球网络战市场规模未来十年将超过万亿元

报告称&#xff0c;网络战市场涉及组件、最终用户和地区&#xff0c;其中组件分为硬件、软件和服务&#xff0c;最终用户分为政府、企业和私人、航空航天和国防、BFSI&#xff08;银行、金融服务和保险&#xff09;、医疗保健等&#xff0c;地区涉及北美、欧洲、亚太地区和拉美…

python turtle 画帕恰狗

先上个图给大家看看 代码 ##作者V w1933423 import turtle turtle.bgcolor("#ece8dc") turtle.setup(600,900) p turtle.Pen() p.pensize(14) p.speed(5) p.color("black")p.penup() p.goto(-54,-44) p.pendown() p.goto(-37,-39) p.goto(-27,-24) p.go…

Unity如何保存玩家的数据(Unity的二进制序列化)

文章目录 什么是二进制序列化读写文件构造函数 自定义二进制序列化 什么是二进制序列化 Unity中的二进制序列化是一种将游戏对象或数据结构转换为二进制格式的过程&#xff0c;以便于存储或网络传输。这使数据能够以高效的方式保存&#xff0c;同时在需要时可以被正确地恢复&a…

太全了吧?CISP全类别详细介绍,看完不迷惑

今天聊聊CISP&#xff0c;注册信息安全专业人员证。 很多人以为说CISP就是个证书&#xff0c;没这么简单&#xff0c;这里面区别可大了。 CISP根据工作领域和实际岗位需要&#xff0c;分为综合型、攻防领域、IT审计、软件开发、数据治理、电子取证和云安全领域等17项证书。 这么…

C++系统相关操作6 - 获取二进制程序的位数(32位或64位)

1. 关键词2. sysutil.h3. sysutil.cpp4. 测试代码5. 运行结果6. 源码地址 1. 关键词 关键词&#xff1a; C 程序 32位 64位 跨平台 实现原理&#xff1a; 根据指针地址的位数来判断程序是32位还是64位。 2. sysutil.h #pragma once#include <cstdint> #include &l…

在容器中共享本地文件

在容器中共享本地文件 目录 卷与绑定挂载的对比在主机和容器之间共享文件Docker 访问主机文件的文件权限试一试 运行一个容器使用绑定挂载在 Docker Dashboard 中访问文件停止容器 额外资源下一步 每个容器都有一切需要运行的资源&#xff0c;而不依赖于主机机器上预先安装的…

怎么样才能踏入机器视觉这个行业?

机器视觉从业的定位层次&#xff1a; 00001. 底层算法开发 00002. 应用软件开发 00003. 视觉系统集成 00004. 视觉系统使用刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「机器视觉的资料从专业入门到高级教程」&#xff0c; 00005. 点个关注在评论区回…

[FreeRTOS 功能应用] 信号量 功能应用

文章目录 一、基础知识点二、代码讲解三、结果演示四、代码下载 一、基础知识点 [FreeRTOS 基础知识] 信号量 概念 [FreeRTOS 内部实现] 信号量 [FreeRTOS 内部实现] 创建任务 xTaskCreate函数解析 本实验是基于STM32F103开发移植FreeRTOS实时操作系统&#xff0c;信号量实战…

python-pytorc+bert句子分类0.1.000

这里写目录标题 引入包加载预训练模型加载数据文件定义数据实例化数据集使用loader加载数据设定最大句子长度定义加padding的函数定义加collate_fn函数使用DataLoader加载数据 定义模型测试预训练模型输出测试预训练模型输出定义自己的模型 参考 引入包 import torch from tor…