溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C#中棧和隊(duì)列的用法示例

發(fā)布時(shí)間:2021-08-23 12:32:13 來源:億速云 閱讀:128 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“C#中棧和隊(duì)列的用法示例”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C#中棧和隊(duì)列的用法示例”這篇文章吧。

堆棧(Stack)

代表了一個(gè)后進(jìn)先出的對象集合。當(dāng)您需要對各項(xiàng)進(jìn)行后進(jìn)先出的訪問時(shí),則使用堆棧。當(dāng)您在列表中添加一項(xiàng),稱為推入元素,當(dāng)您從列表中移除一項(xiàng)時(shí),稱為彈出元素。

常用方法:

public virtual void Clear();

從 Stack 中移除所有的元素。

public virtual bool Contains( object obj );

判斷某個(gè)元素是否在 Stack 中。

public virtual object Peek();

返回在 Stack 的頂部的對象,但不移除它。

public virtual object Pop();

移除并返回在 Stack 的頂部的對象。

public virtual void Push( object obj );

向 Stack 的頂部添加一個(gè)對象。

public virtual object[] ToArray();

復(fù)制 Stack 到一個(gè)新的數(shù)組中。

========================================================

隊(duì)列(Queue)

代表了一個(gè)先進(jìn)先出的對象集合。當(dāng)您需要對各項(xiàng)進(jìn)行先進(jìn)先出的訪問時(shí),則使用隊(duì)列。當(dāng)您在列表中添加一項(xiàng),稱為入隊(duì),當(dāng)您從列表中移除一項(xiàng)時(shí),稱為出隊(duì)。

常用方法:

public virtual void Clear();

從 Queue 中移除所有的元素。

2 public virtual bool Contains( object obj );

判斷某個(gè)元素是否在 Queue 中。

public virtual object Dequeue();

移除并返回在 Queue 的開頭的對象。

public virtual void Enqueue( object obj );

向 Queue 的末尾添加一個(gè)對象。

public virtual object[] ToArray();

復(fù)制 Queue 到一個(gè)新的數(shù)組中。

public virtual void TrimToSize();

設(shè)置容量為 Queue 中元素的實(shí)際個(gè)數(shù)。

=========================================================

簡單實(shí)例:

編程判斷一個(gè)字符串是否是回文?;匚氖侵敢粋€(gè)字符序列以中間字符為基準(zhǔn)兩邊字符完全相同,如字符序列“ACBDEDBCA”是回文。

算法思想:

判斷一個(gè)字符序列是否是回文,就是把第一個(gè)字符與最后一個(gè)字符相比較,第二個(gè)字符與倒數(shù)第二個(gè)字符比較,依次類推,第 i 個(gè)字符與第 n-i個(gè)字符比較。如果每次比較都相等,則為回文,如果某次比較不相等,就不是回文。因此,可以把字符序列分別入隊(duì)列和棧,然后逐個(gè)出隊(duì)列和出棧并比較出隊(duì)列的字符和出棧的字符是否相等,若全部相等則該字符序列就是回文,否則就不是回文。

using System;
using System.Collections.Generic;
namespace 棧和隊(duì)列舉例
{
 class Program
 {
  static void Main(string[] args)
  {
   string str = Console.ReadLine();
   Stack<char> stack = new Stack<char>();
   Queue<char> queue = new Queue<char>();
   for (int i = 0; i < str.Length; i++)
   {
    stack.Push(str[i]);
    queue.Enqueue(str[i]);
   }
   bool isHui = true;
   while(stack.Count > 0)
   {
    if(stack.Pop() != queue.Dequeue())
    {
     isHui = false;
     break;
    }
   }
   Console.WriteLine("是否回文字符串:" + isHui);
   Console.ReadKey();
  }
 }
}

以上是“C#中棧和隊(duì)列的用法示例”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI