《C#数据结构与算法》—201线性表

线性表的实现方式

 顺序表

线性表的顺序存储是指在内存中用一块地址连续的空间依次存放线性表的数据元素,用这种方式存储的线性表叫顺序表。

特点:表中相邻的数据元素在内存中存储位置也相邻。

顺序表接口实现:

方法名参数返回值描述
GetLengthint返回线性表的当前元素个数(长度)。
Clearvoid清空线性表,重置内部元素计数为0,释放存储空间。
IsEmptybool判断线性表是否为空(元素个数为0),返回true;否则返回false
AddT itemvoid在表尾追加元素。若容量不足,自动扩容。
Insert

T item,

 int index

void在指定索引处插入元素。索引需满足 0 ≤ index ≤ count,否则抛出异常。
Deleteint indexT删除并返回指定索引的元素。索引需满足 0 ≤ index < count,否则抛出异常。
GetEleint indexT获取指定索引的元素。索引越界时抛出异常。
索引器int indexT通过索引访问元素(如 list[0])。索引越界时抛出异常。
LocateT valueint返回第一个value相等的元素索引,未找到返回-1

代码: IList.cs

internal interface IList<T>
{int GetLength();//求长度void Clear(); //清空bool IsEmpty(); //判断是否为空void Add(T item);// 添加void Insert(T item ,int index);//插入T Delete(int index);//删除T GetEle(int index);//取表元T this[int index] { get; }//定义一个索引器, 获取元素int Locate(T value); //按值查找
}

顺序表的实现

代码的实现:SeqList.cs

1、定义字段:
private T[] data; //用来存储数据private int count ;//表示存了多少个数据
2、实现构造函数 :
(1)  实现构造函数
 public SeqList(int size)  //size:数组的最大容量{data = new T[size];   // 初始化数组count = 0;            // 元素个数初始为0} 
(2)  默认构造函数(委托调用)
public SeqList():this(10) //默认构造函数 容量是10
{}
3、添加基础方法
(1)  获取当前元素数量
public int GetLength()
{return count;
}
(2)  判断是否为空 
public bool IsEmpty()
{return count == 0;
}
(3)  清空列表 
public void Clear()
{count = 0;
}
4. 实现核心操作
(1) 添加元素(到末尾)
public void Add(T item)
{if(count == data.Length) //当前数组已经存满{Console.WriteLine("前顺序表已经存满,不允许再存入");}else{data[count] = item;count++;}
}
 (2)  插入元素(到指定位置)
public T GetEle(int index)
{if(index>=0&& index<=count-1){return data[index];}else{Console.WriteLine("索引不存在");return default(T);}
}
(3) 删除元素(按索引)
public T Delete(int index)
{T temp = data[index];for (int i = index + 1; i < count; i++){data[i - 1] = data[i];}count--;return temp;
}
5. 实现访问与查找
(1) 按索引获取元素
public T GetEle(int index)
{if(index>=0&& index<=count-1){return data[index];}else{Console.WriteLine("索引不存在");return default(T);}
}
(2) 索引器
public T this[int index]
{get { return GetEle(index); }
}
(3) 按值查找索引
public int Locate(T value)
{for (int i = 0; i < count; i++){if (data[i].Equals(value)){return i;}}return -1;
}

代码使用:Program.cs

namespace _001_List
{internal class Program{static void Main(string[] args){SeqList<string> seqList = new SeqList<string>();seqList.Add("123");seqList.Add("145");seqList.Add("167");Console.WriteLine("GetEle:"+seqList.GetEle(0));Console.WriteLine("this:"+seqList[0]);seqList.Insert("777", 1);for (int i = 0;i<seqList.GetLength(); i++){Console.Write(seqList[i]+ " ");}Console.WriteLine("seqList:");seqList.Delete(0);for (int i = 0; i < seqList.GetLength(); i++){Console.Write(seqList[i] + " ");}Console.WriteLine("seqList:");seqList.Clear();Console.WriteLine(seqList.GetLength()); Console.ReadKey();}}
}

输出结果:

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

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

相关文章

深入解析C++11委托构造函数:消除冗余初始化的利器

一、传统构造函数的痛点 在C11之前&#xff0c;当多个构造函数需要执行相同的初始化逻辑时&#xff0c;开发者往往面临两难选择&#xff1a; class DataProcessor {std::string dataPath;bool verbose;int bufferSize; public:// 基础版本DataProcessor(const std::string&am…

LeetCode 热题 100 189. 轮转数组

LeetCode 热题 100 | 189. 轮转数组 大家好&#xff0c;今天我们来解决一道经典的算法题——轮转数组。这道题在LeetCode上被标记为中等难度&#xff0c;要求我们将数组中的元素向右轮转 k 个位置。下面我将详细讲解解题思路&#xff0c;并附上Python代码实现。 问题描述 给定…

GAEA商业前景和生态系统扩展

GAEA情感坐标系不仅增强了AI对人类情感的理解&#xff0c;也为Web3生态注入了新的活力。通过去中心化的数据存储和共享&#xff0c;GAEA构建了一个开放透明的数据市场&#xff0c;为AI训练提供了优质的数据源。同时&#xff0c;贡献数据的用户将获得灵魂积分&#xff08;SOUL P…

[原创](现代Delphi 12指南):[macOS 64bit App开发]: [2]如何使用跨平台消息框?

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…

js逆向绕过指纹识别

​​一、兼容性说明​​ 官方支持 curl_cffi 明确支持 Windows 平台&#xff0c;并提供了预编译的安装包。其核心功能&#xff08;如浏览器指纹模拟、HTTP/2 支持&#xff09;在 Windows 上与 Linux/macOS 表现一致。 版本要求 • Python 3.8 及以上版本&#xff08;推荐 Pyth…

聊聊对Mysql的理解

目录 1、Sql介绍 1.1、SQL的分类 1.2、数据库的三大范式 1.3、数据表的约束 1.4、约束的添加与删除 2、核心特性 3、主要组件 4、数据结构原理 5、索引失效 6、常用问题 7、优势与局限 前言 MySQL是一个开源的关系型数据库管理系统(RDBMS)&#xff0c;由瑞典MySQL A…

[HOT 100] 1617. 统计子树中城市之间最大距离

文章目录 1. 题目链接2. 题目描述3. 题目示例4. 解题思路5. 题解代码6. 复杂度分析 1. 题目链接 1617. 统计子树中城市之间最大距离 - 力扣&#xff08;LeetCode&#xff09; 2. 题目描述 给你 n 个城市&#xff0c;编号为从 1 到 n 。同时给你一个大小为 n-1 的数组 edges &…

接口自动化——参数化

之前有说过&#xff0c;通过pytest测试框架标记参数化功能可以实现数据驱动测试。数据驱动测试使用的文件主要有以下类型&#xff1a; txt 文件 csv 文件excel 文件json 文件yaml 文件.... 本文主要讲的就是以上几种文件类型的读取和使用 一.txt 文件读取使用 首先创建一个 …

游戏引擎学习第257天:处理一些 Win32 相关的问题

设定今天的工作计划 今天我们本来是打算继续开发性能分析器&#xff08;Profiler&#xff09;&#xff0c;但在此之前&#xff0c;我们认为有一些问题应该先清理一下。虽然这类事情不是我们最关心的核心内容&#xff0c;但我们觉得现在是时候处理一下了&#xff0c;特别是为了…

实验三 触发器及基本时序电路

1.触发器的分类&#xff1f;各自的特点是什么&#xff1f; 1 、 D 触发器 特点&#xff1a;只有一个数据输入端 D &#xff0c;在时钟脉冲的触发沿&#xff0c;输出 Q 的状态跟随输入端 D 的 状态变化&#xff0c;即 &#xff0c;功能直观&#xff0c;利于理解和感受…

硬件加速模式Chrome(Edge)闪屏

Chrome开启“硬件加速模式”后&#xff0c;打开浏览器会闪屏或看视频会闪屏&#xff0c;如果电脑只有集显&#xff0c;直接将这个硬件加速关了吧&#xff0c;没啥必要开着 解决方法 让浏览器使用独立显卡 在Windows左下角搜索 图形设置 &#xff0c;将浏览器添加进去&#…

前端工程化利器:Node.js 文件匹配库 fast-glob 完全指南——比传统方案快 350% 的「文件搜索神器」

为什么需要 fast-glob&#xff1f; 在前端工程化场景中&#xff0c;文件匹配是高频操作&#xff1a;自动化构建、资源打包、静态资源管理等都依赖高效的路径匹配。传统的 node-glob 虽然功能齐全&#xff0c;但性能瓶颈明显。fast-glob 应运而生——它以 极简 API 和 超高性能…

React class 的组件库与函数组件适配集成

如果你有一个 基于 React class 的组件库&#xff0c;现在需要在 React hooks 函数组件中使用&#xff0c;你可以通过以下几种方式实现适配和集成&#xff1a; 数据生命周期确保 class 组件使用 React.forwardRef 导出&#xff08;或手动绑定 ref&#xff09; ✅ 1. 直接使用 c…

Sway初体验

Sway&#xff08;缩写自 SirCmpwn’s Wayland compositor[1]&#xff09;是一款专为 Wayland 设计的合成器&#xff0c;旨在与 i3 完全兼容。根据官网所述&#xff1a; Sway 是 Wayland 的合成器&#xff0c;也是 x11 的 i3 窗口管理器的替代品。它可以根据您现有的 i3 配置工作…

dubbo 参数校验-ValidationFilter

org.apache.dubbo.rpc.Filter 核心功能 拦截RPC调用流程 Filter是Dubbo框架中实现拦截逻辑的核心接口&#xff0c;作用于服务消费者和提供者的作业链路&#xff0c;支持在方法调用前后插入自定义逻辑。如参数校验、异常处理、日志记录等。扩展性机制 Dubbo通过SPI扩展机制动态…

Lesson 16 A polite request

Lesson 16 A polite request 词汇 park n. 公园&#xff0c;停车场&#xff0c;庄园 v. 停车&#xff0c;泊车 例句&#xff1a;让我来停车。    Let me park. 相关&#xff1a;spot n. 车位 区别&#xff1a;garden n. 花园 [小&#xff0c;私家的] 例句&#xff1a;我们…

解决 Builroot 系统编译 perl 编译报错问题

本文提供一种修复 Builroot 系统编译 perl 编译报错途径 2025-05-04T22:45:08 rm -f pod/perl5261delta.pod 2025-05-04T22:45:08 /usr/bin/ln -s perldelta.pod pod/perl5261delta.pod 2025-05-04T22:45:08 /usr/bin/gcc -c -DPERL_CORE -fwrapv -fpcc-struct-return -pipe -f…

Spring MVC 中解决中文乱码问题

在 Spring MVC 中解决中文乱码问题&#xff0c;需要从 请求参数编码 和 响应内容编码 两方面入手。以下是完整的解决方案&#xff1a; 一、解决请求参数中文乱码 1. POST 请求编码&#xff08;表单提交&#xff09; 配置 CharacterEncodingFilter 在 web.xml 中添加 Spring 提…

MYSQL数据库突然消失

之前在下载mysql时发现没有my.ini。考虑到后面的项目可能需要&#xff0c;看着教程自己创建了一次&#xff0c;当时就发生了所有数据库消失的问题&#xff0c;近几天这种事件又发生了。我在服务里看到我有mysql和mysql57两个服务&#xff0c;启动一个的时候另一个就无法启动&am…

【Spring】idea + maven 从零创建Spring IoC容器示例

【Spring】idea maven 从零创建Spring IoC容器示例 1. 环境准备2. 创建maven项目3. 添加依赖4. 创建Java类与接口4.1 定义接口UserService4.2 实现接口UserServiceImpl 5. 配置Spring IoC容器6. 编写主类调用IoC容器扩展&#xff1a;使用注解方式实现IoC1. 修改beans.xml2.使用…