中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

求職網站開發(fā)我想注冊一個網站怎么注冊

求職網站開發(fā),我想注冊一個網站怎么注冊,網站備案與服務器,自己網站做訪問統計代碼“知止而后有定&#xff0c;定而后能靜&#xff0c;靜而后能安&#xff0c;安而后能慮&#xff0c;慮而后能得?!?目錄 前言文章有誤敬請斧正 不勝感恩&#xff01;||Day07 C#常見數據結構&#xff1a;1. 集合&#xff08;Collection&#xff09;1.1 **List<T>**1.2 **H…

“知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得?!?/p>

目錄

  • 前言
    • 文章有誤敬請斧正 不勝感恩!||Day07
  • C#常見數據結構:
      • 1. 集合(Collection)
        • 1.1 **List<T>**
        • 1.2 **HashSet<T>**
        • 1.3 **LinkedList<T>**
        • 1.4 **ObservableCollection<T>**
      • 2. 棧(Stack)
        • 2.1深度優(yōu)先搜索(DFS)
        • 2.2廣度優(yōu)先搜索(BFS)
        • 代碼解釋
        • 適用場景
      • 3. 堆(Heap)
        • 3.1 **內存管理中的堆**
        • 3.2 **堆數據結構**
      • 4. 隊列(Queue)
      • 5. 字典(Dictionary)
        • 5.1 **其他字典類型**
      • 總結


前言

昨天我們學習了C#屬性訪問器、方法參數和C#字符串,StringBuilder的一些內容,今天我們學習C#常見數據結構。


文章有誤敬請斧正 不勝感恩!||Day07

以下是本篇文章正文內容:

C#常見數據結構:

數據結構和算法一直是學習編程語言繞不開的部分,今天我們就一起來學習一些基本的數據結構,將來可以通過力扣,???#xff0c;cf 等網站來學習我們數據結構和算法部分。

好的,讓我們更詳細地探討 C# 中的集合、棧、堆、隊列和字典。我們將通過更深入的解釋和具體的示例代碼來擴展這些內容。

1. 集合(Collection)

C# 中的集合提供了處理一組對象的靈活方式。集合通常被封裝在 System.Collections.Generic 命名空間中。每種集合類型都有其獨特的特性,適用于不同的需求。

1.1 List

List<T> 是一種動態(tài)數組,它允許按照索引快速訪問元素,并且在添加或刪除元素時可以自動調整大小。它是最常用的集合之一,適用于需要頻繁添加、刪除或按索引訪問元素的場景。

示例代碼:

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Add(6);
numbers.Remove(3);
int number = numbers[2]; // 獲取第三個元素
1.2 HashSet

HashSet<T> 是一種無序的集合,不允許包含重復元素。它使用哈希表來存儲數據,提供了快速的查找、添加和刪除操作,非常適合需要確保唯一性的場景。

示例代碼:

HashSet<string> fruits = new HashSet<string> { "Apple", "Banana", "Cherry" };
fruits.Add("Banana"); // 無效操作,因為 "Banana" 已存在
bool containsApple = fruits.Contains("Apple"); // 返回 true
1.3 LinkedList

LinkedList<T> 是一個雙向鏈表,允許快速的插入和刪除操作,尤其適用于需要在集合中間頻繁插入或刪除元素的場景。

示例代碼:

LinkedList<string> linkedList = new LinkedList<string>();
linkedList.AddLast("First");
linkedList.AddLast("Second");
linkedList.AddFirst("Zero");
linkedList.Remove("Second");
1.4 ObservableCollection

ObservableCollection<T> 是一個支持通知機制的集合,當集合的內容發(fā)生變化時,它會通知綁定的用戶界面組件。這個特性使得它非常適用于數據綁定(Data Binding)場景,尤其是在 WPF 或 UWP 應用中。

示例代碼:

ObservableCollection<string> observableList = new ObservableCollection<string>();
observableList.CollectionChanged += (sender, args) => 
{Console.WriteLine("Collection changed");
};
observableList.Add("New Item"); // 觸發(fā) CollectionChanged 事件

2. 棧(Stack)

Stack<T> 是一種后進先出(LIFO, Last In First Out)的數據結構。它類似于一堆盤子,你只能從頂部取下盤子(彈出 Pop 操作),也只能在頂部放置新的盤子(推入 Push 操作)。棧非常適合處理需要反向順序處理數據的場景,比如撤銷操作或深度優(yōu)先搜索(DFS)算法。
示例代碼:

Stack<string> stack = new Stack<string>();
stack.Push("First");
stack.Push("Second");
stack.Push("Third");string top = stack.Pop(); // "Third" 被移除并返回
string peek = stack.Peek(); // 返回 "Second",但不移除

在 C# 中,廣度優(yōu)先搜索(BFS)和深度優(yōu)先搜索(DFS)是兩種常用的圖遍歷算法。我們可以記住以下模板加快我們的刷題速度:

2.1深度優(yōu)先搜索(DFS)

深度優(yōu)先搜索是一種遞歸算法,沿著圖的深度遍歷節(jié)點,直到無法繼續(xù)為止,然后回溯。

using System;
using System.Collections.Generic;class Node {public List<Node> Neighbors { get; set; }public Node() {Neighbors = new List<Node>();}
}class GraphTraversal {public bool DFS(Node cur, Node target, HashSet<Node> visited) {if (cur == target) {return true;}visited.Add(cur);foreach (Node next in cur.Neighbors) {if (!visited.Contains(next)) {if (DFS(next, target, visited)) {return true;}}}return false;}
}class Program {static void Main() {// 創(chuàng)建節(jié)點和圖的結構Node start = new Node();Node target = new Node();// 添加鄰居節(jié)點以構建圖...HashSet<Node> visited = new HashSet<Node>();GraphTraversal traversal = new GraphTraversal();bool pathExists = traversal.DFS(start, target, visited);Console.WriteLine(pathExists ? "Path exists!" : "No path found.");}
}

在這里插入圖片描述

2.2廣度優(yōu)先搜索(BFS)

廣度優(yōu)先搜索是一種非遞歸算法,使用隊列逐層遍歷圖的節(jié)點。

using System;
using System.Collections.Generic;class Node {public List<Node> Neighbors { get; set; }public Node() {Neighbors = new List<Node>();}
}class GraphTraversal {public bool BFS(Node start, Node target) {Queue<Node> queue = new Queue<Node>();HashSet<Node> visited = new HashSet<Node>();queue.Enqueue(start);visited.Add(start);while (queue.Count > 0) {Node cur = queue.Dequeue();if (cur == target) {return true;}foreach (Node next in cur.Neighbors) {if (!visited.Contains(next)) {queue.Enqueue(next);visited.Add(next);}}}return false;}
}class Program {static void Main() {// 創(chuàng)建節(jié)點和圖的結構Node start = new Node();Node target = new Node();// 添加鄰居節(jié)點以構建圖...GraphTraversal traversal = new GraphTraversal();bool pathExists = traversal.BFS(start, target);Console.WriteLine(pathExists ? "Path exists!" : "No path found.");}
}

在這里插入圖片描述

代碼解釋
  • DFS:

    • 遞歸遍歷圖中的每個節(jié)點,如果找到目標節(jié)點,則返回 true。
    • visited 集合用于跟蹤已經訪問過的節(jié)點,以防止循環(huán)。
  • BFS:

    • 使用隊列來逐層遍歷圖中的節(jié)點,確保首先訪問距離起點最近的節(jié)點。
    • 通過 visited 集合跟蹤已訪問的節(jié)點,避免重復訪問。
適用場景
  • DFS 通常用于尋找所有可能路徑、路徑存在性驗證或圖的連通性檢測。
  • BFS 更適合用于尋找最短路徑(無權重圖)或分層搜索。

這兩種算法在不同的圖結構和問題中有不同的表現。選擇使用哪種算法應根據具體問題的要求來決定。

3. 堆(Heap)

在 C# 中,堆(Heap)主要是指內存管理中的概念,而不是特定的數據結構。在托管堆(Managed Heap)中,動態(tài)分配的對象被存儲,并由垃圾回收器(Garbage Collector)自動管理它們的生命周期。

3.1 內存管理中的堆

堆用于存儲應用程序運行時創(chuàng)建的動態(tài)對象,例如在 new 操作符下創(chuàng)建的實例。堆的大小是動態(tài)的,內存管理器根據需要分配和釋放內存空間。C# 的垃圾回收器會自動清理不再使用的對象,減少內存泄漏的風險。

示例代碼:

class MyClass
{public int Value;
}MyClass myObject = new MyClass();
myObject.Value = 10;
// 對象 myObject 存儲在堆中,直到不再使用,垃圾回收器會自動清理
3.2 堆數據結構

盡管 C# 語言本身沒有直接的堆數據結構實現,但可以通過 PriorityQueue<TElement, TPriority> 類(在 .NET 6+ 中引入)來模擬優(yōu)先級隊列(Priority Queue),這實際上使用堆結構來管理數據。

示例代碼:

PriorityQueue<string, int> priorityQueue = new PriorityQueue<string, int>();
priorityQueue.Enqueue("Low priority", 3);
priorityQueue.Enqueue("High priority", 1);
priorityQueue.Enqueue("Medium priority", 2);while (priorityQueue.Count > 0)
{string item = priorityQueue.Dequeue();Console.WriteLine(item);
}
// 輸出順序為 "High priority", "Medium priority", "Low priority"

4. 隊列(Queue)

Queue<T> 是一種先進先出(FIFO, First In First Out)的數據結構。隊列的典型應用場景包括任務調度、請求處理等,其中需要以進入的順序處理項目。

示例代碼:

Queue<string> queue = new Queue<string>();
queue.Enqueue("First");
queue.Enqueue("Second");
queue.Enqueue("Third");string firstItem = queue.Dequeue(); // "First" 被移除并返回
string nextItem = queue.Peek(); // 返回 "Second",但不移除

5. 字典(Dictionary)

Dictionary<TKey, TValue> 是一種鍵值對(Key-Value Pair)的數據結構,允許根據鍵快速查找對應的值。鍵必須是唯一的,這意味著字典非常適合處理需要快速查找或存儲與唯一標識符相關的數據的場景。

示例代碼:

Dictionary<int, string> dictionary = new Dictionary<int, string>();
dictionary.Add(1, "One");
dictionary.Add(2, "Two");
dictionary.Add(3, "Three");if (dictionary.ContainsKey(2))
{string value = dictionary[2]; // 獲取鍵 2 對應的值 "Two"
}dictionary.Remove(3); // 移除鍵為 3 的鍵值對
5.1 其他字典類型
  • SortedDictionary<TKey, TValue>: 一個按鍵排序的字典,使用二叉樹實現。
  • ConcurrentDictionary<TKey, TValue>: 一個線程安全的字典,適用于多線程環(huán)境。

總結

C# 提供了多種數據結構來幫助開發(fā)者高效管理和處理數據。通過了解和正確使用這些數據結構,可以大大提高代碼的性能和可維護性。根據具體的需求選擇合適的集合類型、棧、隊列或字典,是編寫高質量代碼的關鍵。

嗚呼!今天我們C#語言的基礎部分就算結束了,后面還有更加深奧的知識等著我們。以后我們還會更新關于其他語言的一些知識。C#更加復雜的部分還在后面我們今后可以通過一些實戰(zhàn)的案例來學習。如果您學到了一些有點用的知識,不妨點贊,分享關注一波。

http://www.risenshineclean.com/news/27194.html

相關文章:

  • 高郵市建設網站龍崗seo網絡推廣
  • aso.net 網站開發(fā)營銷策略
  • 做app還是網站太原百度seo排名軟件
  • phpwind怎么做網站整站優(yōu)化工具
  • 怎樣做百度推廣網站天津谷歌優(yōu)化
  • 昆明學校網站建設長沙網站優(yōu)化體驗
  • 網站做cdn需要注意什么意思百家號排名
  • 如何做網站靜態(tài)頁面?zhèn)€人推廣網站
  • 網站怎么做聯系我們頁面營銷技巧培訓ppt
  • 請收網址999938關鍵詞優(yōu)化公司哪家效果好
  • 專業(yè)建網站平臺網絡營銷是做什么的工作
  • 中山網站建設哪家好seo是什么服務
  • 網站的排版網絡營銷成功的案例分析
  • 連云港專業(yè)網站制作公司seo快排軟件
  • 惠州seo推廣公司南寧seo平臺標準
  • 網站域名地址查詢網站創(chuàng)建
  • 如何進行優(yōu)化短視頻關鍵詞優(yōu)化
  • 網站模板如何編輯軟件代引流推廣公司
  • 建設網站一般要多錢sem工作內容
  • 南通網站建設規(guī)劃成都網絡營銷公司哪家好
  • 網站優(yōu)化要怎么做seo做什么網站賺錢
  • 網站不足之處人民網疫情最新消息
  • 麻城做網站做一個網站需要什么
  • 知名的電子商務網站紹興seo公司
  • 斗破蒼穹制作公司seo關鍵詞排名優(yōu)化官網
  • b2b網站建設怎么做大學生網絡營銷策劃方案書
  • 建設銀行網站網頁丟失口碑營銷的優(yōu)勢有哪些
  • 畢業(yè)設計做企業(yè)門戶網站今日新聞頭條大事
  • 重慶國外網站推廣企業(yè)為何選擇網站推廣外包?
  • 網站建設石家莊百度人工申訴客服電話