簡單數據結構(四)棧和隊列的簡單應用


     編程判斷一個字符串是否是回文。回文是指一個字符序列以中間字符為基准兩邊字符完全相同,如字符序列“ ACBDEDBCA”是回文。

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

程序實現:

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();
}

 

結果:

image

image

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com