云南省建设工程投标中心网站瑞安app开发

news/2025/9/26 4:11:25/文章来源:
云南省建设工程投标中心网站,瑞安app开发,免费的工程信息网站,深圳网站开发哪家服务专业个人主页 #xff1a; 个人主页 个人专栏 #xff1a; 《数据结构》 《C语言》 文章目录 前言一、栈的实现思路1. 结构的定义2. 初始化栈(StackInit)3. 入栈(StackPush)4. 出栈(StackPop)5. 获取栈顶元素(StackTop)6. 检查栈是否为空(StackEmpty)7. 销毁栈(StackDestroy) 二、… 个人主页 个人主页 个人专栏 《数据结构》 《C语言》 文章目录 前言一、栈的实现思路1. 结构的定义2. 初始化栈(StackInit)3. 入栈(StackPush)4. 出栈(StackPop)5. 获取栈顶元素(StackTop)6. 检查栈是否为空(StackEmpty)7. 销毁栈(StackDestroy) 二、代码实现总结 前言 栈一种特殊的线性结构其只允许在一端进行插入删除数据。允许操作数据的一端被称为栈顶另一端被称为栈底。 本篇博客将要实现的是数组栈。 一、栈的实现思路 对于栈的特殊性用数组(在数组尾部插入删除数据) 和 链表(头插头删数据)实现栈的时间复杂度都是O(1)难度不大。 数组栈的优劣 优 数组支持随机访问(用下标访问数据)许多算法需要随机访问的支持如二分法…缓存利用率高 劣 空间不够时要扩容有时会造成空间浪费 1. 结构的定义 栈的结构非常简单 一个指向动态开辟空间的指针一个记录实际空间大小的变量一个记录栈顶元素的下标即可。 typedef int STDataType;typedef struct Stack {STDataType* data;int top;//栈顶下标int capacity;//空间大小 }Stack;2. 初始化栈(StackInit) data指针指向动态开辟的空间capacity记录此时空间大小top置为0。 top 置0表示栈顶数据将要插入的位置。top 置-1表示此时栈顶数据的位置。 这里采用top 置0。 //初始化栈#define SIZE 4void StackInit(Stack* ps) {assert(ps);ps-data (STDataType*)malloc(sizeof(STDataType) * SIZE);if (ps-data NULL){perror(malloc);exit(-1);}ps-top 0;ps-capacity SIZE; }3. 入栈(StackPush) 因为top初始化为0所以直接在top下标处入数据即可。但要注意在入数据前要检查容量如果top capacity 要扩容。 此处检查容量的操作可以封装成一个函数但没必要因为栈的操作只有入栈要检查容量其它的操作并不需要检查容量封装成一个函数反而效率减低了(函数的调用要形成函数栈帧)。 //入栈 void StackPush(Stack* ps, STDataType x) {assert(ps);if (ps-top ps-capacity){STDataType* tmp (STDataType*)realloc(ps-data, sizeof(STDataType) * (ps-capacity * 2));if (tmp NULL){perror(realloc);exit(-1);}ps-data tmp;ps-capacity * 2;}ps-data[ps-top] x;ps-top; }4. 出栈(StackPop) top 表示的是栈顶数据将要入栈的位置那么出栈操作只需要让top 减 1即可。(下次入栈数据会直接覆盖) 但要注意top 0 时表示栈内没有数据不能进行出栈操作。 出栈操作不能获取数据 //出栈 void StackPop(Stack* ps) {assert(ps);assert(ps-top ! 0);ps-top--; }5. 获取栈顶元素(StackTop) top 指向的是数据将要入栈的位置也就是栈顶数据的下一个位置。 那么要获取栈顶数据只需要读取top - 1处即可。但要注意如果top 0那么top - 1 -1会越界访问所以top 0 时不能获取栈顶元素。 //获取栈顶元素 STDataType StackTop(Stack* ps) {assert(ps);assert(ps-top 0);return ps-data[ps-top - 1]; }6. 检查栈是否为空(StackEmpty) top 指向的是数据将要入栈的位置其数值也表示栈内数据个数。 所以我们只需要进行 top 0 的判断即可知道栈是否为空。 //检查栈是否为空 bool StackEmpty(Stack* ps) {assert(ps);return ps-top 0; }7. 销毁栈(StackDestroy) free掉动态开辟的空间使capacity 置 0top 置 0。 //销毁栈 void StackDestroy(Stack* ps) {assert(ps);free(ps-data);ps-top 0;ps-capacity 0; }二、代码实现 Stack.h 文件存放的是函数的声明头文件的引用结构体的定义 Stack.c 文件存放的是函数的实现 //Stack.h 文件#pragma once#include stdio.h #include stdlib.h #include assert.h #include stdbool.h#define SIZE 4typedef int STDataType;typedef struct Stack {STDataType* data;int top;int capacity; }Stack;//初始化栈 void StackInit(Stack* ps);//入栈 void StackPush(Stack* ps, STDataType x);//出栈 void StackPop(Stack* ps);//获取栈顶元素 STDataType StackTop(Stack* ps);//检查栈是否为空 bool StackEmpty(Stack* ps);//销毁栈 void StackDestroy(Stack* ps); //Stack.c 文件#include Stack.h//初始化栈 void StackInit(Stack* ps) {assert(ps);ps-data (STDataType*)malloc(sizeof(STDataType) * SIZE);if (ps-data NULL){perror(malloc);exit(-1);}ps-top 0;ps-capacity SIZE; }//入栈 void StackPush(Stack* ps, STDataType x) {assert(ps);if (ps-top ps-capacity){STDataType* tmp (STDataType*)realloc(ps-data, sizeof(STDataType) * (ps-capacity * 2));if (tmp NULL){perror(realloc);exit(-1);}ps-data tmp;ps-capacity * 2;}ps-data[ps-top] x;ps-top; }//出栈 void StackPop(Stack* ps) {assert(ps);assert(ps-top ! 0);ps-top--; }//获取栈顶元素 STDataType StackTop(Stack* ps) {assert(ps);assert(ps-top 0);return ps-data[ps-top - 1]; }//检查栈是否为空 bool StackEmpty(Stack* ps) {assert(ps);return ps-top 0; }//销毁栈 void StackDestroy(Stack* ps) {assert(ps);free(ps-data);ps-top 0;ps-capacity 0; }总结 以上就是我对于栈的实现。

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

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

相关文章

青岛品牌网站制作旅游网站总结

0.实现效果 效果不咋好 ,参数不好调整 1.算法原理 3D NDT(Normal Distributions Transform)算法是一种用于同时定位和地图生成(SLAM)的机器人导航算法,特别适用于三维点云数据的配准。以下是关于3D NDT算法的详细解释: 算法原理 点云划分与分布计算:3D NDT算法首先将…

凡科建站seo那个网站教人做冰点

原型&#xff1a;extern char *strstr(const char *str1, const char *str2); 需要包含的头文件&#xff1a;#include <string.h> 作用&#xff1a;用于判断字符串str2在字符串str1中第一次出现的位置。如果没有找到则返回NULL&#xff0c;找到了则返回str1中的位置。 …

seo网站推广经理公司主营业务网站建设

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

西安网站优化服务西安建设工程信息网新平台

2.2.2 if 案例实践 学习目标 这一节&#xff0c;我们从 服务管理、堡垒机登录、小结 三个方面来学习。 服务管理 案例需求 要求脚本执行需要有参数&#xff0c;通过传入参数来实现不同的功能。参数和功能详情如下&#xff1a;参数 执行效果start 服务启动中...sto…

西安网站设计外包公司瑞安网站建设电话

标准类型内建函数&#xff1a;cmp(obj1, obj2) 比较obj1和obj2&#xff0c;根据比较结果返回整型i:i < 0 if obj1 < obj2i > 0 if obj1 > obj2i 0 if obj1 obj2repr(obj)或obj 返回一个对象的字符串表示str(obj) 返回对象适合可读性好的字符串表示type(obj) 得到…

# vite + vue3 实现打包后 dist 文件夹可以直接打开 html 文件预览

vite + vue3 实现打包后 dist 文件夹可以直接打开 html 文件预览 问题 为什么突然写这么一篇文章,首先,自己用vite+vue写了点静态页面,需要给客户看页面效果,但是我打包之后将 dist 发送给客户后,客户没有通过ngi…

Python 在人工智能与机器学习中的地位与实践

一、引言 🤖 人工智能(AI)和机器学习(ML)是当下科技发展的核心动力。从语音识别到图像分类,从推荐系统到自然语言处理,AI 正在不断改变人类的生产和生活方式。而在这一浪潮中,Python 已成为最主要的开发语言。…

怎样做彩票投资网站国外刺绣图案设计网站

一、介绍 Portainer是Docker的图形化管理工具&#xff0c;提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作&#xff08;包括上传下载镜像&#xff0c;创建容器等操作&#xff09;、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用…

订阅号怎么做微网站无忧网站模板

teger 基本数据类型int 的包装类 Integer 类型的对象包含一个 int 类型的字段 一、类定义 public final class Integer extends Number implements Comparable<Integer>{}类被声明为final的,表示不能被继承;继承了Number抽象类,可以用于数字类型的一系列转换;实现了Comp…

做塑料的网站名字万户建站

使用 Redis 可以优化性能&#xff0c;但是存在 Redis 的数据和数据库同步的问题&#xff0c;这是我们需要关注的问题。假设两个业务逻辑都是在操作数据库的同一条记录&#xff0c;而 Redis 和数据库不一致。 Redis 和数据库不一致 在图中&#xff0c;T1 时刻以键 key1 保存数…

seo三人行网站百度安装app下载免费

螺旋式开发并不是敏捷开发。虽然它们都是软件开发过程中的一种模型或方法&#xff0c;但两者在核心理念、实施方式和适用场景上存在显著差异。 螺旋式开发是一种结合了瀑布式开发和迭代式开发的软件开发过程。它强调风险分析和质量保证&#xff0c;在每个螺旋周期中都包括需求…

深圳骏域网站建设专家有一个做场景动画的网站

出现这个问题不是一次两次了&#xff0c;就是启动后&#xff0c;键盘所有按键&#xff0c;小红帽都不能用&#xff0c;必须重启好几次才能用。 有时候键盘能用&#xff0c;但是打开 dw ,复制不能用&#xff0c;真是懊恼。 今天又出现这个情况&#xff0c;我偶然想到是不是和昨天…

网站搭建的费用上海网站建设 普送

来源&#xff1a;集智俱乐部作者&#xff1a;Guillem Collell、Jordi Fauquet译者:张澳审校&#xff1a;刘培源编辑&#xff1a;邓一雪导语信息和能量之间的关系已经在物理学、化学和生物学中得到了广泛的研究。然而&#xff0c;这种联系并没有在神经科学领域形式化。2015年&am…

手机网站自助建设成都网站设计师

初级代码游戏的专栏介绍与文章目录-CSDN博客 初用Mac会有很多不习惯&#xff0c;特别是鼠标滚轮的滚动方向和windows是反的&#xff0c;还好是通过设置改变的。下面是我自己的设置。 目录 一、显示器设置 二、屏保、时钟、触发角 三、程序坞与菜单栏 四、安全性与隐私 五…

网站怎么上传到空间有多个网页的大网站如何做

Ryujinx/Ryujinx Stars: 26.1k License: MIT Ryujinx 是用 C# 编写的实验性任天堂 Switch 模拟器。 该项目旨在提供出色的准确性和性能、用户友好的界面以及稳定的构建。它已经通过了大约 4050 个测试&#xff0c;其中超过 4000 个可以启动并进入游戏&#xff0c;其中大约 340…

做一个普通网站多少钱常熟网站建设专业的公司

随着建筑装修行业的快速发展&#xff0c;甲醛污染问题逐渐受到人们的关注。甲醛是一种常见的室内空气污染物&#xff0c;主要来源于建筑装修过程中使用的各种材料。为了保障人们的健康和安全&#xff0c;甲醛传感器在装修过程中的监测作用显得尤为重要。英国Alphasense公司推出…

网站建设流程 费用网站建设开发实训的目的

css实现鼠标悬停时元素的显示与隐藏 跟着B站黑马学习小兔鲜项目&#xff0c;有个点记录一下 就是当鼠标悬浮在商品列表上时&#xff0c;列表中的商品会显示出来&#xff0c;离开时&#xff0c;商品隐藏&#xff0c;如下&#xff1a; 感觉这个功能经常会遇到&#xff0c;但一直…

网站功能详细设计网站换服务器有影响吗

jenkins配置 安装Generic Webhook Trigger 配置远程触发令牌 勾选Print post content和Print contributed variables用于打印值 配置gitlab 选择新增webhook 配置webhook http://JENKINS_URL/generic-webhook-trigger/invoke,将JENKINS_URL修改成自己的jenkins地址 先保存…

网站脚本错误网址导航发布页

激发创新活力&#xff1a;算力券与模型券&#xff0c;科技企业的新动力 在数字化转型的大潮中&#xff0c;科技创新已成为推动企业发展的核心动力。为了进一步激发企业的创新活力&#xff0c;政府和相关机构开始探索一种新的激励机制——发放“算力券”和“模型券”。这些创新…