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

【数据结构3-栈和队列】

数据结构3-栈和队列

  • 1 栈-特殊的线性表-先进后出
    • 1.1 栈的三个案例
  • 2 队列-与栈相反-先进先出
    • 2.1 队列的案例
  • 3 用C实现栈的代码:
  • 4 用C实现队列的代码

1 栈-特殊的线性表-先进后出

在这里插入图片描述

1.1 栈的三个案例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 队列-与栈相反-先进先出

在这里插入图片描述

2.1 队列的案例

在这里插入图片描述

3 用C实现栈的代码:

#define MAX_SIZE 100
typedef struct
{int data[MAX_SIZE];//栈的深度int top;//栈顶记录
} Stack;
//初始化
void init(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 value)
{if (isFull(stack)){printf("Stack is full. Cannot push element.\n");return;}stack->data[++stack->top] = value;
}
//出栈
int pop(Stack *stack)
{if (isEmpty(stack)){printf("Stack is empty. Cannot pop element.\n");return -1;}return stack->data[stack->top--];
}int main()
{Stack stack;init(&stack);push(&stack, 10);push(&stack, 20);push(&stack, 30);printf("Popped element: %d\n", pop(&stack));printf("Popped element: %d\n", pop(&stack));printf("Popped element: %d\n", pop(&stack));return 0;
}

4 用C实现队列的代码

#include <stdio.h>#define MAX_SIZE 100typedef struct {int data[MAX_SIZE];int front;int rear;
} Queue;
void initQueue(Queue *queue) {queue->front = 0;queue->rear = 0;
}
int isFull(Queue *queue) {return (queue->rear + 1) % MAX_SIZE == queue->front;
}
int isEmpty(Queue *queue) {return queue->front == queue->rear;
}
void enqueue(Queue *queue, int value) {if (isFull(queue)) {printf("Queue is full.\n");return;}queue->data[queue->rear] = value;queue->rear = (queue->rear + 1) % MAX_SIZE;
}
int dequeue(Queue *queue) {if (isEmpty(queue)) {printf("Queue is empty.\n");return -1;}int value = queue->data[queue->front];queue->front = (queue->front + 1) % MAX_SIZE;return value;
}
int main() {Queue queue;initQueue(&queue);enqueue(&queue, 1);enqueue(&queue, 2);enqueue(&queue, 3);printf("%d\n", dequeue(&queue));printf("%d\n", dequeue(&queue));printf("%d\n", dequeue(&queue));return 0;
}
  • 我们使用了一个结构体来表示队列,其中包含一个数组用于存储数据,以及两个指针front和rear分别指向队列的头部和尾部。
  • initQueue函数用于初始化队列
  • isFull函数用于判断队列是否已满
  • isEmpty函数用于判断队列是否为空
  • enqueue函数用于入队操作
  • dequeue函数用于出队操作
  • 可以根据需要修改MAX_SIZE的值来调整队列的最大容量。另外,如果队列已满时尝试入队或者队列为空时尝试出队,代码会输出相应的提示信息。

相关文章:

【数据结构3-栈和队列】

数据结构3-栈和队列 1 栈-特殊的线性表-先进后出1.1 栈的三个案例 2 队列-与栈相反-先进先出2.1 队列的案例 3 用C实现栈的代码&#xff1a;4 用C实现队列的代码 1 栈-特殊的线性表-先进后出 1.1 栈的三个案例 2 队列-与栈相反-先进先出 2.1 队列的案例 3 用C实现栈的代码&…...

STL--list双向链表

功能 将数据进行链式存储 链表&#xff08;list&#xff09;是一种物理存储单元上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成&#xff1a;链表由一系列结点组成 结点的组成&#xff1a;一个是存储数据元素的数据域&#xff0…...

ElasticSearch入门篇

简介 ElasticSearch简介&#xff1a;简称为es&#xff0c; es是一个开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据&#xff1b;本身扩展性很好&#xff0c;可以扩展到上百台服务器&#xff0c;处理PB级别的数据。es也使用Java开发并使用Lucene…...

MAXHUB会议解决方案持续进化,以“高效”为核心推动行业发展

4月16日&#xff0c;MAXHUB 2024新品发布会在视源股份&#xff08;002841&#xff09;北京产业园圆满举行。本次发布会以“智会融合 进化不止”为主题&#xff0c;首发MAXHUB高效会议解决方案&#xff0c;以AI智能、开放兼容、场景化交付为方向&#xff0c;为用户提供高效、便捷…...

CentOS 7安装Redis

说明&#xff1a;本文介绍如何在CentOS 7操作系统下安装Redis 下载安装 首先&#xff0c;去官网上下载所需要安装的版本&#xff0c;官网地址&#xff1a;https://download.redis.io/releases/&#xff0c;我这里下载3.2.1版本的 下载完&#xff0c;上传到云服务器上&#xf…...

Kubernetes (K8s) 部署前后端分离项目

要使用Kubernetes (K8s) 部署一个涵盖Django后端、Vue前端、Redis、Nginx、RabbitMQ和MySQL的前后端分离项目,需要遵循以下步骤。这个过程涉及创建和配置多个资源,包括部署(Deployments)、服务(Services)、配置映射(ConfigMaps)、密钥(Secrets)和Ingress规则。 大纲…...

MLT媒体程序框架01:概述

MLT官网 概述 MLT是一个开源的多媒体框架&#xff0c;专为电视广播而设计和开发。它为广播公司、视频编辑器、媒体播放器、转码器、网络流媒体和更多类型的应用程序提供了一个工具包。该系统的功能是通过各种现成的工具、XML创作组件和基于API的可扩展插件提供的。 它是通过…...

9【原型模式】复制一个已存在的对象来创建新的对象

你好&#xff0c;我是程序员雪球。 今天我们来学习23种设计模式之原型模式&#xff0c;在平时开发过程中比较少见。我带你了解什么是原型模式&#xff0c;使用场景有哪些&#xff1f;有什么注意事项&#xff1f;深拷贝与浅拷贝的区别&#xff0c;最后用代码实现一个简单的示例…...

谷粒商城实战(013 业务-认证服务-短信验证)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第211p-第p219的内容 介绍 认证中心要集成 社交登录、OAuth2.0、单点登录 等功能 OAuth 2.0&#xff1a; 问题解决&#xff1a; OAuth 2.0 主要…...

Unity中支持泰语--没有版权限制

在Unity中支持泰语主要涉及以下几个方面&#xff1a; 选择合适的字体&#xff1a;在Unity中&#xff0c;确保使用支持泰文字符的字体是至关重要的。例如&#xff0c;可以选择使用Noto Serif Thai字体&#xff0c;这是一个支持泰语的字体2。 处理Unity版本问题&#xff1a;某些…...

C语言传统垃圾收集器的缺陷以及我的思路

传统的比如Boehm回收器&#xff0c;都是在malloc/realloc/free上做文章&#xff0c;参考这篇文章【How the Boehm Garbage Collector Works】的解释&#xff0c;因为C数据结构是无法预料的&#xff0c;内存里面并没有特殊标记&#xff0c;很难判断哪些是指针哪些是数据&#xf…...

数据交换格式

一、什么是数据交换格式 在计算机的不同程序之间&#xff0c;或者不同的编程语言之间进行交换数据&#xff0c;也需要一种大家都能听得懂得‘语言’&#xff0c;这就是数据交换格式&#xff0c;它通过文本以特定的形式来进行描述数据。 二、常用的几种数据交换格式 客户端常…...

电力系统卫星授时信号安全隔离装置防护方案

电力系统是国家关键基础设施&#xff0c; 电力安全关系国计民生&#xff0c; 是国家安全的重要保障&#xff0c; 与政治安全、经济安全、 网络安全、社会安全等诸多领域密切关联。电网运行情况瞬息万变&#xff0c;为了在其发生事故时能够及时得到处理&#xff0c;需要统一的时…...

【编程TOOL】VC++6.0下载安装配置使用保姆式教程

目录 ​编辑 1.软件介绍 2.软件下载 3.软件安装 3.1.下载得到可执行文件并双击进行安装 3.2. 点击下一步 3.3. 选择安装位置 3.4. 勾选“创建桌面快捷方式”并点击下一步 5. 点击安装并等待 3.6. 先取消运行&#xff0c;后点击完成&#xff0c;软件即安装完毕 4.兼容性配置 4.1…...

组织机构代码是哪几位?营业执照怎么看组织机构代码?

组织机构代码是哪几位? 组织机构代码通常指的是组织机构代码证上的一组特定数字&#xff0c;它用于唯一标识一个组织或机构。在中国&#xff0c;组织机构代码由9位数字组成&#xff0c;前8位是本体代码&#xff0c;最后1位是校验码。这组代码是按照国家有关标准编制的&#x…...

nginx禁止ip访问,只允许域名访问

无论ip直接访问&#xff0c;还是通过域名访问&#xff0c;最终都是通过ip访问到服务器浏览器访问时会携带Host参数&#xff0c;通过ip访问时携带的是ip&#xff0c;通过域名访问时携带的是域名nginx收到请求后判断host的值&#xff0c;如果判断出不是通过域名访问的则拒绝&…...

10组Python面试高频问题与详尽解答指南

大家好&#xff0c;你们准备好了吗&#xff1f;面试官们总喜欢出其不意地问些让人头大的问题。别担心&#xff0c;今天我来帮你们梳理10个Python面试中的热门难题&#xff0c;让你的回答既专业又有趣&#xff01;让我们一起变身Python高手吧&#xff01; 1. 问题: 什么是Pytho…...

使用SpringBoot将中国地震台网数据保存PostGIS数据库实践

目录 前言 一、数据转换 1、Json转JavaBean 2、JavaBean与数据库字段映射 二、空间数据表设计 1、表结构设计 三、PostGIS数据保存 1、Mapper接口定义 2、Service逻辑层实现 3、数据入库 4、运行实例及结果 总结 前言 在上一篇博客中基于Java的XxlCrawler网络信息爬…...

后端返回树结构

出参结构 Getter Setter public class TreeResponse implements Serializable {// 主键private Long id;// 父级节点private Long parentId;// 层级private Byte layer;// 编码private String docCode;// 名称private String docName;// 子节点private List<TreeResponse&g…...

C语言——通讯录的实现

一.前言 嗨嗨嗨&#xff0c;又和大家见面了&#xff01;前面我们讲到了如何实现一个循序表。现在我们开始讲解如何基于循序表来实现通讯录功能。 二.正文 通讯录中的SeqlList.h #pragma once //#define SLDateType int #include<stdio.h> #include<stdlib.h> #…...

从URP到Built-in:手把手教你迁移Unity第三人称模板并成功换人(解决Shader报错)

从URP到Built-in&#xff1a;Unity第三人称模板迁移全流程实战指南 当你在Unity中打开官方提供的Third Person模板&#xff0c;准备将其应用到自己的项目时&#xff0c;可能会遇到一个棘手的问题——这个模板是基于URP&#xff08;Universal Render Pipeline&#xff09;设计的…...

如何让直播输入可视化:input-overlay终极指南

如何让直播输入可视化&#xff1a;input-overlay终极指南 【免费下载链接】input-overlay Show keyboard, gamepad and mouse input on stream 项目地址: https://gitcode.com/gh_mirrors/in/input-overlay 想象一下&#xff0c;当你在直播中展示行云流水的操作时&#…...

G-Helper终极指南:华硕笔记本性能控制革命性突破

G-Helper终极指南&#xff1a;华硕笔记本性能控制革命性突破 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertb…...

毕业论文难写?2026年AI写作辅助网站排行榜权威发布,轻松定稿不是梦!

写论文效率低、熬夜赶稿、查重不过关&#xff1f;别慌&#xff01;2026 年最新 AI 论文写作工具合集来了&#xff0c;覆盖选题、大纲、初稿、润色、降重、格式、文献引用全流程&#xff0c;帮你精准匹配最适合的学术助手&#xff0c;彻底告别论文内耗&#xff01;&#x1f3c6;…...

抓包科普小知识

1、什么是抓包 抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作&#xff0c;通过抓包可以&#xff1a; 分析网络问思路就是设置一个中间人进程负责抓包&#xff0c;每次目标进程之间的会话都先与中间人进程通信&#xff0c;再进行转发。业务分析分析网…...

终极二维码修复指南:免费在线工具QrazyBox完整使用教程

终极二维码修复指南&#xff1a;免费在线工具QrazyBox完整使用教程 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你是否遇到过重要二维码因为打印模糊、咖啡渍或物理磨损而无法扫描的困扰&a…...

UE5.3导入FBX实战:如何完美保留Maya/Blender的复杂层级并一键设置碰撞?

UE5.3 FBX导入全流程&#xff1a;从Maya/Blender复杂层级到可交互蓝图的终极解决方案 当机械臂的每个关节都需要独立控制&#xff0c;当建筑群中的每扇门窗都要单独设置碰撞&#xff0c;当角色装备的每件武器都需绑定动画——这些正是三维内容创作者在UE5中处理复杂资产时的真实…...

5分钟搞定专业网络拓扑图:easy-topo终极使用指南

5分钟搞定专业网络拓扑图&#xff1a;easy-topo终极使用指南 【免费下载链接】easy-topo vuesvgelement-ui 快捷画出网络拓扑图 项目地址: https://gitcode.com/gh_mirrors/ea/easy-topo 还在为绘制复杂的网络架构图而头疼吗&#xff1f;网络拓扑图是网络工程师、系统管…...

C++ `dynamic_cast

1. 基础 C类型转换概览为什么需要dynamic_cast 2. dynamic_cast 的使用 基本语法与其他类型转换&#xff08;如 static_cast、reinterpret_cast 和 const_cast&#xff09;的对比 3. RTTI (运行时类型信息) 什么是RTTI如何在C中启用和禁用RTTI 4. dynamic_cast 与多态 使用dyna…...

在PC上体验PS4游戏:shadPS4模拟器入门与实战指南

在PC上体验PS4游戏&#xff1a;shadPS4模拟器入门与实战指南 【免费下载链接】shadPS4 PS4 emulator for Windows,Linux,MacOS 项目地址: https://gitcode.com/gh_mirrors/shad/shadPS4 还在为无法在PC上畅玩PS4独占游戏而烦恼吗&#xff1f;想象一下&#xff0c;那些只…...