简单数据结构(四)栈和队列的简单应用

     编程判断一个字符串是否是回文。回文是指一个字符序列以中间字符为基准两边字符完全相同,如字符序列“ 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

 

原文地址:https://www.cnblogs.com/moguwang/p/5259551.html