最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#棧和隊(duì)列詳解

 更新時(shí)間:2026年06月01日 10:32:05   作者:影寂ldy  
在C#中,棧(Stack)和隊(duì)列(Queue)是兩種非常重要的數(shù)據(jù)結(jié)構(gòu),它們各自具有獨(dú)特的特點(diǎn)和用途,本文介紹C#棧和隊(duì)列的相關(guān)知識(shí),感興趣的朋友一起看看吧

一、Stack 棧集合(先入后出)

1. 核心概念

棧是存儲(chǔ)數(shù)據(jù)的容器,遵循 先入后出(后進(jìn)先出 LIFO) 規(guī)則。

  • 數(shù)據(jù)存入:入棧(Push)
  • 數(shù)據(jù)取出:出棧(Pop)
  • 最先存進(jìn)去的在棧底,最后存的在棧頂,只能操作棧頂元素

2. 兩種定義方式

// 1. 泛型棧(推薦、類型安全、無裝箱拆箱)
Stack<int> stack = new Stack<int>();
// 2. 非泛型棧(老舊、object存儲(chǔ)、類型不安全、有裝箱拆箱)
Stack stack1 = new Stack();
stack1.Push("張三"); //棧底
stack1.Push("李四");
stack1.Push("王五"); //棧頂

3. 棧核心五大方法

// 1. Push():入棧,數(shù)據(jù)壓入棧頂
stack1.Push("張三");
stack1.Push("李四");
stack1.Push("王五");
// 2. Pop():出棧,刪除并返回【棧頂】元素
Console.WriteLine(stack1.Pop()); //輸出:王五
// 3. Peek():查看棧頂,只返回不刪除
Console.WriteLine(stack1.Peek()); //輸出:李四
// 4. Count:獲取棧中元素個(gè)數(shù)
Console.WriteLine(stack1.Count);
// 5. 輔助方法
stack1.Clear();      //清空所有元素
stack1.Contains("張三"); //判斷是否包含指定元素

4. 棧的遍歷方式

沒有索引,不能直接下標(biāo)遍歷,需轉(zhuǎn)數(shù)組或 foreach

// 方式1:轉(zhuǎn)數(shù)組遍歷
for (int i = 0; i < stack1.Count; i++)
{
    Console.WriteLine(stack1.ToArray()[i]);
}
// 方式2:foreach 遍歷
foreach (var i in stack1)
{
    Console.WriteLine(i + "-----");
}

5. 棧執(zhí)行流程演示

  • 入棧順序:張三 → 李四 → 王五
  • 棧內(nèi)結(jié)構(gòu):棧底【張三、李四、王五】棧頂
  • Pop() 彈出:先出王五,再出李四,最后出張三

二、Queue 隊(duì)列集合(先入先出)

1. 核心概念

隊(duì)列遵循 先入先出(先進(jìn)先出 FIFO) 規(guī)則,類似排隊(duì)。

  • 數(shù)據(jù)存入:入隊(duì)(Enqueue)
  • 數(shù)據(jù)取出:出隊(duì)(Dequeue)
  • 先排隊(duì)的先出去,后排隊(duì)的后出去

2. 定義與基礎(chǔ)用法

// 泛型隊(duì)列(項(xiàng)目推薦、類型安全)
Queue<string> queue = new Queue<string>();
// 入隊(duì):從隊(duì)尾添加元素
queue.Enqueue("hello1");
queue.Enqueue("hello2");
queue.Enqueue("hello3");

3. 隊(duì)列核心方法

// 1. Dequeue():出隊(duì),刪除并返回【隊(duì)首】第一個(gè)元素
Console.WriteLine(queue.Dequeue()); //hello1
// 2. Peek():只查看隊(duì)首元素,不刪除
Console.WriteLine(queue.Peek()); //hello2
// 3. 其他方法
Console.WriteLine(queue.Count); //元素個(gè)數(shù)
queue.Clear(); //清空
queue.Contains("hello2"); //判斷包含

4. 隊(duì)列遍歷

foreach (var item in queue)
{
    Console.WriteLine(item);
}

5. 隊(duì)列執(zhí)行流程

  • 入隊(duì)順序:hello1 → hello2 → hello3
  • 隊(duì)首 hello1,隊(duì)尾 hello3
  • Dequeue 優(yōu)先取出最先進(jìn)來的元素

三、Stack 與 Queue 核心區(qū)別(必背)

集合

規(guī)則

存入方法

取出方法(刪+返)

查看方法(只返不刪)

Stack 棧

先入后出

Push()

Pop() 取棧頂

Peek() 看棧頂

Queue 隊(duì)列

先入先出

Enqueue()

Dequeue() 取隊(duì)首

Peek() 看隊(duì)首

四、所有集合訪問方式終極總結(jié)

  • 數(shù)組、List、ArrayList、SortedList:支持索引 [下標(biāo)] 訪問
  • Dictionary、Hashtable:只能 Key 訪問,無索引
  • Stack、Queue無索引,只能專用方法存取,不能下標(biāo)訪問

五、終極背誦口訣

  • 棧 Stack:壓棧Push、彈棧Pop,后進(jìn)先出
  • 隊(duì)列 Queue:入隊(duì)Enqueue、出隊(duì)Dequeue,先進(jìn)先出
  • Peek:只查看、不刪除
  • 泛型集合安全高效,非泛型老舊淘汰

到此這篇關(guān)于C#棧和隊(duì)列詳解的文章就介紹到這了,更多相關(guān)C#棧和隊(duì)列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

焉耆| 屏边| 舞阳县| 通渭县| 宣恩县| 庄浪县| 福清市| 西充县| 梨树县| 湖口县| 南宁市| 林周县| 房产| 鞍山市| 郑州市| 青州市| 荆州市| 长沙市| 延庆县| 克拉玛依市| 武平县| 卫辉市| 宜丰县| 尚义县| 兴海县| 天门市| 建宁县| 勐海县| 郸城县| 顺平县| 蒲江县| 漠河县| 宣威市| 哈巴河县| 固始县| 章丘市| 太康县| 万山特区| 连江县| 霞浦县| 兰溪市|