C#用链表和数组分别实现堆栈

1.链表
实现栈的四个基本功能 入栈 出栈 长度 栈顶值

public class 基础 : MonoBehaviour
{public class MyStack{//定义每一个元素的数据结构 //下一个元素 和 该元素的值public class StackData{public StackData next;public object data;public StackData(StackData next, object data){this.next = next;this.data = data;}}//记录数量int size;//代表栈顶元素  StackData top;public void Push(object data){//因为栈是先进后出 后进来的元素就成为了栈顶//所以每压入一个元素 就让后进来元素的next指向前一个元素//出栈时 丢失最后节点的引用即可top = new StackData(top, data);size++;}public object Pop(){//弹出栈顶元素 同时下一个元素就是新栈顶object result = top.data;top = top.next;size--;return result;}public int Count{get{return size;}}public object Peek(){if (top == null) return null;return top.data;}}private void Start(){MyStack ms = new MyStack();ms.Push(1);ms.Push(2);ms.Push(3);ms.Push(4);ms.Push(5);Debug.Log(ms.Pop());Debug.Log(ms.Pop());Debug.Log(ms.Count);Debug.Log(ms.Peek());}
}

2.数组
(1)数组就是会更麻烦一点 不过可以加深对数组和栈的理解
(2)Pop和Enlarge 核心就是数组满了以后 创建一个新数组 将旧书组中的元素放入新数组 然后再将新数组赋值给旧数组即可
(3)栈是先进后出 所以只需要着重处理数组的末尾索引即可

public class 基础 : MonoBehaviour
{public class MyStack<T>{//通过数组实现堆栈public T[] list;public int maxSize = 2;public int nowSize = 0;public MyStack(){list = new T[maxSize];}public int Count    {get{return nowSize;}}public void Push(T data){if(maxSize >= nowSize + 1){list[nowSize++] = data;}else{Enlarge();list[nowSize++] = data;}}public T Pop(){if(nowSize > 0){T[] list3 = new T[maxSize];T temp = list[--nowSize];for (int i = 0; i < list.Length - 1; i++){list3[i] = list[i];}list = list3;return temp;}else{return default(T);}}public void Enlarge(){T[] list2 = new T[maxSize * 2];for(int i = 0; i < list.Length; i++){list2[i] = list[i];}list = list2;maxSize *= 2;}}private void Start(){MyStack<int> ms = new MyStack<int>();ms.Push(1);ms.Push(2);ms.Push(3);ms.Push(4);ms.Push(5);Debug.Log(ms.Pop());Debug.Log(ms.Count);}
}

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

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

相关文章

linux驱动编程 - kfifo先进先出队列

简介&#xff1a; kfifo是Linux Kernel里面的一个 FIFO&#xff08;先进先出&#xff09;数据结构&#xff0c;它采用环形循环队列的数据结构来实现&#xff0c;提供一个无边界的字节流服务&#xff0c;并且使用并行无锁编程技术&#xff0c;即当它用于只有一个入队线程和一个出…

nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点

目录 安装nginx配置nginx其它权限配置 安装nginx dnf install -y nginx配置nginx whereis nginxcd /etc/nginx llcd conf.d touch vhost.conf vim vhost.conf 命令模式下输入:set nu或:set number可以显示行号 复制如下内容&#xff1a; server {listen 80;server_name…

【0294】Postgres内核 dynahash 之 hash_search 实现原理

相关文章: 【0289】Postgres内核之哈希表(Hash Tables) 【0290】Postgres内核之dynahash(动态哈希表,dynamic hash tables)(概念篇) 【0291】Postgres内核之dynahash table 创建 【0292】Postgres内核源码之dynahash 插入entry实现 【0293】Postgres内核之创建 dynahas…

ESP32 通过蓝牙显示歌词代码示例

通过蓝牙协议播放音乐&#xff0c;有的时候需要显示歌词&#xff0c;这里就是a2dp库获取了歌词 值得注意的是要想正确获取到歌词&#xff0c;必须打开各种播放器的字幕&#xff08;歌词&#xff09;开关 本项目用了三个开源库 a2dp&#xff0c;tft_espi,xfont. a2dp &#x…

基于python实现的监听服务接口是否正常,发送异常消息到钉钉群

获取钉钉机器人 创建钉钉群组(要求至少三个成员)进入群组 设置>机器人>添加机器人选择自定义机器人 按照要求填写完获取到 Webhook的链接 实现代码 from time import sleep import requests import json from datetime import datetime import logging# 配置日志记录的…

数据结构第11节: B树

B树是一种自平衡的树数据结构&#xff0c;它能够保持数据排序&#xff0c;并且在插入、删除和查找操作中具有对数时间复杂度。B树广泛应用于文件系统、数据库和索引中&#xff0c;因为它们可以有效地处理大量数据。 B树的特点&#xff1a; 所有叶子节点都位于同一层。每个节点…

【】AI八股-神经网络相关

Deep-Learning-Interview-Book/docs/深度学习.md at master amusi/Deep-Learning-Interview-Book GitHub 网上相关总结&#xff1a; 小菜鸡写一写基础深度学习的问题&#xff08;复制大佬的&#xff0c;自己复习用&#xff09; - 知乎 (zhihu.com) CV面试问题准备持续更新贴 …

.net 调用海康SDK的跨平台解决方案

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔序言 上2篇海康SDK使用以及常见的坑…

PCL 点云PFH特征描述子

点云PFH特征描述子 一、概述1.1 概念1.2 算法原理一、代码实现二、结果示例一、概述 1.1 概念 点特征直方图PFH(Point Feature Histograms)描述子:用于表示点云中每个点的局部几何形状信息,它是一种直方图描述子,包括了点云的法线方向和曲率信息,PFH描述子可以帮助区分不同…

深入Django(八)

掌握Django的管理后台 引言 在前七天的教程中&#xff0c;我们介绍了Django的基础架构、模型、视图、模板、URL路由、表单系统以及数据库迁移。今天&#xff0c;我们将深入了解Django的管理后台&#xff0c;这是一个功能强大的内置管理界面&#xff0c;用于创建、更新、查看和…

【JavaEE精炼宝库】文件操作(1)——基本知识 | 操作文件——打开实用性编程的大门

目录 一、文件的基本知识1.1 文件的基本概念&#xff1a;1.2 树型结构组织和目录&#xff1a;1.3 文件路径&#xff08;Path&#xff09;&#xff1a;1.4 二进制文件 VS 文本文件&#xff1a;1.5 其它&#xff1a; 二、Java 操作文件2.1 方法说明&#xff1a;2.2 使用演示&…

QT面试笔记总计

一 Qt 保证多线程安全? 使互斥锁保证多线程安全性。QMutex类、。使用读写锁保证多线程安全性&#xff0c;QReadWriteLock。使用信号和槽机制保证多线程安全性。使用显示切换保证多线程安全性。QTread类。 Qt 中的事件与信号的区别? 事件与信号的实现机制不同&#xff1b;事…

HCIA综合实验

学习新思想&#xff0c;争做新青年。今天学习的是HCIA综合实验&#xff01; 实验拓扑 实验需求 总部&#xff1a; 1、除了SW8 SW9是三层交换机&#xff0c;其他交换机均为2层交换机。 2、GW为总部的出口设备&#xff0c;使用单臂路由技术&#xff0c;VLAN10,20,100的网关都在GW…

ERROR: “armeabi-v7a“ not supported for HarmonyOS

IDE 从 devecostudio-mac-4.1.3.700 升级至 devecostudio-mac-5.0.3.403 后抛出了如下异常: ERROR: "armeabi-v7a" not supported for HarmonyOS. 解决办法 一.entry/build-profile.json5 需 entry/build-profile.json5 的 abiFilters 中移除 "armeabi-v7a&qu…

计算机网络体系结构详解:协议与分层

在学习计算机网络时&#xff0c;理解网络协议与分层体系结构是至关重要的。本文将详细介绍这些概念&#xff0c;帮助基础小白快速入门。 1. 什么是网络协议 网络协议是计算机网络中用于数据交换的规则和标准。这些规则规定了数据格式、时序以及发送和接收数据时的动作。网络协…

Unity3D瓦片地图辅助定位工具

介绍 该工具用于TileMap的瓦片辅助定位&#xff0c;通过键盘或鼠标按瓦片尺寸0到1的比例作为单次移动值移动定位点游戏对象。当采用定位点游戏对象映射瓦片时&#xff0c;可使用该工具来移动定位点游戏对象&#xff0c;在新版本Unity3D的TileMap编辑器中可使用GameObject Brush…

基于java+springboot+vue实现的流浪动物管理系统(文末源码+Lw)277

摘 要 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&#xff0c;对流浪动物信息管理的提升&…

【React】React18 Hooks之useState

目录 useState案例1&#xff08;直接修改状态&#xff09;案例2&#xff08;函数式更新&#xff09;案例3&#xff08;受控表单绑定&#xff09;注意事项1&#xff1a;set函数不会改变正在运行的代码的状态注意事项2&#xff1a;set函数自动批量处理注意事项3&#xff1a;在下次…

实现基于Spring Security的权限管理系统

实现基于Spring Security的权限管理系统 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代Web应用中&#xff0c;权限管理系统是至关重要的组成部分。通过…

[数据集][目标检测]护目镜检测数据集VOC+YOLO格式888张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;888 标注数量(xml文件个数)&#xff1a;888 标注数量(txt文件个数)&#xff1a;888 标注类别…