最新国产好看的视频,伊人天堂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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

洛扎县| 湾仔区| 丹巴县| 扎赉特旗| 宁南县| 漠河县| 高唐县| 德昌县| 施秉县| 多伦县| 溧阳市| 缙云县| 渑池县| 潍坊市| 隆回县| 福清市| 昌邑市| 大洼县| 新河县| 安新县| 达孜县| 广州市| 汤原县| 榆社县| 余庆县| 宁化县| 竹北市| 丁青县| 广饶县| 忻州市| 镇平县| 黄大仙区| 林口县| 隆子县| 延津县| 葫芦岛市| 报价| 正安县| 时尚| 上杭县| 乐都县|