《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.pswp.cn/news/904127.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/904127.shtml
英文地址,請注明出處:http://en.pswp.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.使用…