C#(五十九)之三种数据结构 stack queue sortedList

news2024/10/7 8:23:26

堆栈(Stack):

代表了一个后进先出的对象集合。当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素。

Stack 类的方法和属性

下表列出了 Stack 类的一些常用的 属性:

属性

描述

Count

获取 Stack 中包含的元素个数。

 下表列出了 Stack 类的一些常用的 方法:

序号

方法名 & 描述

1

public virtual void Clear(); 从 Stack 中移除所有的元素。

2

public virtual bool Contains( object obj ); 判断某个元素是否在 Stack 中。

3

public virtual object Peek(); 返回在 Stack 的顶部的对象,但不移除它。

4

public virtual object Pop(); 移除并返回在 Stack 的顶部的对象。

5

public virtual void Push( object obj ); 向 Stack 的顶部添加一个对象。

6

public virtual object[] ToArray(); 复制 Stack 到一个新的数组中。

示例:

// 声明对象
            Stack sta = new Stack();
            // 推入对象
            sta.Push("a");
            sta.Push("b");
            sta.Push("c");
            sta.Push("d");
            foreach (string item in sta)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 取出顶部的元素且移除
            string asdf = (string)sta.Pop();
            foreach (string item in sta)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 取出顶部元素,不移除
            string ff = (string)sta.Peek();
            foreach (string item in sta)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            Console.ReadLine();

Queue是一个对象,存什么类型都好

System.Collections.Queue类表示对象的先进先出集合,存储在 Queue(队列) 中的对象在一端插入,从另一端移除。

优点

1、能对集合进行顺序处理(先进先出)。

2、能接受null值,并且允许重复的元素。

Queue的构造器

构造器函数

注释

Queue ()

初始化 Queue 类的新实例,该实例为空,具有默认初始容量(32)并使用默认增长因子(2.0)。

Queue (ICollection)

初始化 Queue 类的新实例,该实例包含从指定集合复制的元素,具有与所复制的元素数相同的初始容量并使用默认增长因子。

Queue (Int32)

初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用默认增长因子。

Queue (Int32, Single)

初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用指定的增长因子。

Queue的属性

属性名

注释

Count

获取 Queue 中包含的元素数。

Queue的方法

方法名

注释

Void Clear()

从 Queue 中移除所有对象。

Bool Contains(object obj)

确定某元素是否在 Queue 中。

Object Clone()

创建 Queue 的浅表副本。

Void CopyTo(Array array,int index)

从指定数组索引开始将 Queue 元素复制到现有一维 Array 中。

Object Dequeue()

移除并返回位于 Queue 开始处的对象。

Void Enqueue(object obj)

将对象添加到 Queue 的结尾处。

Object Peek()

返回位于 Queue 开始处的对象但不将其移除。

Object[]ToArray()

将 Queue 元素复制到新数组。

Void TrimToSize()

将容量设置为 Queue 中元素的实际数目。

示例:

Queue que = new Queue();
            // 添加元素
            que.Enqueue("111");
            que.Enqueue("222");
            que.Enqueue("333");
            que.Enqueue("444");
 
            foreach (string  item in que)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 删除元素(取出)
            string qw = (string)que.Dequeue();
            Console.WriteLine(qw+"
");
            foreach (string item in que)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 取出元素,但不删除
            qw = (string)que.Peek();
            foreach (string item in que)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");

SortedList类:

SortedList 类代表了一系列按照键来排序的键/值对,这些键值对可以通过键和索引来访问。

排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(存储键值)也就是说是两个数组,相互关联。集合中的各项总是按键值排序。

SortedList 类的方法和属性

下表列出了 SortedList 类的一些常用的 属性

属性

描述

Capacity

获取或设置 SortedList 的容量。

Count

获取 SortedList 中的元素个数。

IsFixedSize

获取一个值,表示 SortedList 是否具有固定大小。

IsReadOnly

获取一个值,表示 SortedList 是否只读。

Item

获取或设置与 SortedList 中指定的键相关的值。

Keys

获取 SortedList 中的键。

Values

获取 SortedList 中的值。

下表列出了 SortedList 类的一些常用的 方法

序号

方法名 & 描述

1

public   virtual void Add( object key, object value ); 
  向 SortedList 添加一个带有指定的键和值的元素。

2

public   virtual void Clear(); 
  从 SortedList 中移除所有的元素。

3

public   virtual bool ContainsKey( object key ); 
  判断 SortedList 是否包含指定的键。

4

public   virtual bool ContainsValue( object value ); 
  判断 SortedList 是否包含指定的值。

5

public   virtual object GetByIndex( int index ); 
  获取 SortedList 的指定索引处的值。

6

public   virtual object GetKey( int index ); 
  获取 SortedList 的指定索引处的键。

7

public   virtual IList GetKeyList(); 
  获取 SortedList 中的键。

8

public   virtual IList GetValueList(); 
  获取 SortedList 中的值。

9

public   virtual int IndexOfKey( object key ); 
  返回 SortedList 中的指定键的索引,索引从零开始。

10

public   virtual int IndexOfValue( object value ); 
  返回 SortedList 中的指定值第一次出现的索引,索引从零开始。

11

public   virtual void Remove( object key ); 
  从 SortedList 中移除带有指定的键的元素。

12

public   virtual void RemoveAt( int index ); 
  移除 SortedList 的指定索引处的元素。

13

public   virtual void TrimToSize(); 
  设置容量为 SortedList 中元素的实际个数。

示例:

SortedList sort = new SortedList();
            sort.Add("1等奖", "都是比较快");
            sort.Add("3等奖", "删掉了");
            sort.Add("2等奖", "线程VB方法");
 
            for (int i = 0; i < sort.Count; i++)
            {
                // 获取键
                Console.WriteLine(sort.GetKey(i));
                // 获取元素值
                Console.WriteLine(sort.GetByIndex(i)+"
");
            }
 
            // 获取键值数组
            foreach (string item in sort.GetKeyList())
            {
                Console.WriteLine(item);
            }
 
            // 获取元素值
            foreach (string item in sort.GetValueList())
            {
                Console.WriteLine(item);
            }

测试使用全部代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
 
namespace stackss
{
    class Program
    {
        static void Main(string[] args)
        {
            // 声明对象
            Stack sta = new Stack();
            // 推入对象
            sta.Push("a");
            sta.Push("b");
            sta.Push("c");
            sta.Push("d");
            foreach (string item in sta)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 取出顶部的元素且移除
            string asdf = (string)sta.Pop();
            foreach (string item in sta)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 取出顶部元素,不移除
            string ff = (string)sta.Peek();
            foreach (string item in sta)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
 
            Queue que = new Queue();
            // 添加元素
            que.Enqueue("111");
            que.Enqueue("222");
            que.Enqueue("333");
            que.Enqueue("444");
 
            foreach (string  item in que)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 删除元素(取出)
            string qw = (string)que.Dequeue();
            Console.WriteLine(qw+"
");
            foreach (string item in que)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            // 取出元素,但不删除
            qw = (string)que.Peek();
            foreach (string item in que)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
 
            SortedList sort = new SortedList();
            sort.Add("1等奖", "都是比较快");
            sort.Add("3等奖", "删掉了");
            sort.Add("2等奖", "线程VB方法");
 
            for (int i = 0; i < sort.Count; i++)
            {
                // 获取键
                Console.WriteLine(sort.GetKey(i));
                // 获取元素值
                Console.WriteLine(sort.GetByIndex(i)+"
");
            }
 
            // 获取键值数组
            foreach (string item in sort.GetKeyList())
            {
                Console.WriteLine(item);
            }
 
            // 获取元素值
            foreach (string item in sort.GetValueList())
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
        }
    }
}

有好的建议,请在下方输入你的评论。

 

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

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

相关文章

UVM中transaction中数据持续时间的控制

一、代码 首先需要确认持续时间是在driver中进行控制 其中data_size就是数据的持续时钟周期个数

如何看待中国工业MES系统的发展现状?

如何看待中国工业MES系统的发展现状&#xff1f; MES系统在中国工厂推进是否举步维艰&#xff0c;MES系统是否多数华而不实&#xff1f;中国工业化的前途在何方&#xff1f; 什么是MES—— 制造执行系统&#xff08;MES&#xff09;一种用于监控、控制和优化制造过程的软件系统…

多元回归预测 | Matlab基于粒子群算法(PSO)优化高斯过程回归(PSO-GPR)的数据回归预测,matlab代码,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab基于粒子群算法(PSO)优化高斯过程回归(PSO-GPR)的数据回归预测,matlab代码,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分…

【node】借助百度智能云,识别并提取图片中的文字

效果图&#xff1a; 一、对接百度智能云 登录百度智能云&#xff1a;百度智能云-云智一体深入产业 新用户可以免费体验&#xff0c;按照下面来就行&#xff1a; 创建应用之后就会有密钥啥的了 二、在node项目中安装依赖并使用 所有依赖如下&#xff1a; "baidu-aip-sdk…

Python中的*args和**kwargs:无限可能的函数参数详解

概要 在 Python 编程中&#xff0c;*args 和 **kwargs 是常用的两个特殊参数&#xff0c;用于处理不确定数量的函数参数。它们提供了一种灵活的方式来传递和接收参数&#xff0c;使函数的定义更加通用。本文将详细介绍 *args 和 **kwargs 的使用方法&#xff0c;并提供相关代码…

UnityVR--机械臂场景9-简单流水线应用1

目录 一. 整体介绍 二. 准备工作 三. 建立流水线 1. 流水线包含的功能&#xff1a; 2. 流水线的代码结构 3. 场景实现 4. 测试运行 一. 整体介绍 流水线是在空间和时间上合理安排和组织工艺线路的一种形式&#xff0c;它涉及到一种或多种生产设备、传感器、物料传输设备等&…

企业微信群机器人开发

准备工作 已经注册了有效的企业微信账号&#xff0c;并且在客户端上已经登录现有或者新建有效的包含多名企业微信成员的群聊 创建群聊机器人 右键群聊->管理聊天信息->添加群机器人 使用群机器人 在终端某个群组添加机器人之后&#xff0c;创建者可以在机器人详情页…

【Unity天空盒的制作及使用】使用HDR图或六面图制作天空盒及天空盒的几种使用方式

前言【Unity天空盒的制作及使用】使用HDR图或六面图制作天空盒及天空盒的几种使用方式一 、制作天空盒材质1.1 使用HDR文件1.2 使用六张图片二、天空盒的使用方式2.1 场景中设置天空盒2.2 相机中设置天空盒总结前言 Unity工程中每次打开工程映入眼帘的蓝灰过渡的画面就是Unity默…

随笔 --- 是否可以用左右子树结点数差来衡量二叉树是否平衡?

这道题目来自mooc上浙江大学由陈越 、何钦铭老师主讲的数据结构课程上。 题目如下&#xff1a; 由于评论区关闭&#xff0c;在这里写下我自己的思路&#xff1a; 根据要求使用结点数来衡量是否是平衡时&#xff0c;极端条件是NR 2NL 或者反之。 如果构建二叉树时恰好构建为斜…

xxl-job使用详解(包含部分踩坑信息)

概念 XXL-JOB 是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 分布式下&#xff0c;每个服务都可以搭建为集群&#xff0c;这样的好处是可以将任务切片分给每一个服务从而实现并行执行&#xff0c;提高任务调度的处理效率。 在…

你真的会CSS?来看看这几个效果怎么做!

最近阿锋在超市排队买菜&#xff08;辣条&#xff09; 一个大叔一边给孩子买吃的一边说&#xff1a; 这些都是增加记忆力的&#xff0c;对孩子好&#xff01; 蓝莓&#xff0c;深海鱼&#xff0c;全麦面包&#xff0c;坚果儿&#xff0c;十六个核桃 不禁感叹现在的孩子们还真是…

6个美化代码片段转换截图图片在线工具推荐

有些截图的代码片段不是太美观&#xff0c;我们可以用统一的代码片段美化截图工具&#xff1a; 文章目录&#xff1a; 1、Codeimg 2.、Carbon 3、Ray.so 4、CodeKeep 5、Chalk.ist 6、Codepng Codeimg 支持设置设备系统&#xff0c;比如可选 MacOs、Windows系统样式。以及设置…

QT error: C2039: “jifen_lineEdit”: 不是“Ui::UIMainFrame”的成员

问题&#xff1a;新增控件不在ui_.h文件中 前提&#xff1a; 在ui界面新增了一个edit控件&#xff0c;在对应cpp中使用ui->jifen_lineEdit时就报错 error: C2039: “jifen_lineEdit”: 不是“Ui::UIMainFrame”的成员 或者error: no member named jifen_lineEdit in Ui::U…

java项目之二手手机回收平台系统(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的二手手机回收平台系统。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框…

论文怎么导入endnotes

我不怎么用pdf直接导入&#xff0c;感觉基本信息还要重新填比较麻烦&#xff0c;期刊基本都支持直接导入了&#xff0c; 1、知网&#xff1a; 随机选择一篇论文&#xff1a; 说实话搜索之前我以为没有结果的&#xff08;x 注意先点击前面的选中&#xff0c;然后点击导出分…

【七天入门数据库】第三天 MySQL的库表操作

系列文章传送门&#xff1a; 【七天入门数据库】第一天 MySQL的安装部署 【七天入门数据库】第二天 数据库理论基础 【七天入门数据库】第三天 MySQL的库表操作 文章目录 一、SQL语句书写规范 二、数据库的操作 三、表的基本操作 四、表的约束 五、存储引擎 六、MySQ…

密码学入门——消息认证码

文章目录 参考书目一、简介二、消息认证码的使用步骤三、消息认证码的应用实例四、消息认证码的实现方法五、认证加密六、HMAC 参考书目 图解密码技术&#xff0c;第三版 一、简介 使用消息认证码可以确认自己收到的消息是否就是发送者的本意&#xff0c;也就是说&#xff0…

python实现压缩与解压(zlib)

本文将使用python的zlib与base64进行压缩与解压 其中base64模块用于对字节流与字符串的转换&#xff0c;zlib用于数据的压缩与解压 同时在后面附上在JS中遇到需要压缩解压的案例 解压代码&#xff1a; import base64 import zlibinput_string eJwlzT1OAzEQBeC7pJjSf1rHu0h…

yum方式安装mysql 8.0.33失败,缺少依赖包

配置网络源 [rootlocalhost yum.repos.d]# ping www.163.com PING z163picipv6.v.bsgslb.cn (61.184.215.68) 56(84) bytes of data. 64 bytes from 61.184.215.68 (61.184.215.68): icmp_seq1 ttl128 time13.2 ms 64 bytes from 61.184.215.68 (61.184.215.68): icmp_seq2 tt…

造船码头行车限位器与驾驶室控制柜无线通讯

随着我国海洋交通的快速发展&#xff0c;船舶信息化管理的建设&#xff0c;无线通信资源的配置&#xff0c;将先进的无线通信技术引入水上交通安全的监管业务中已是大势所趋。码头安装(设备和系统的安装) 船舶下水后常停靠于厂内舾装码头, 以安装船体设备, 机电设备&#xff0c…