回文:字符对称排列的字符串,例如ABCBA

思路:根据队:先进先出和栈: 先进后出的原则,进行比较出队和出栈的字符是否相等。如果相等,则为回文。

创建控制台应用程序。

  1         #region 字符节点类
  2         class CharNode
  3         {
  4             public char Char    //字符
  5             {
  6                 get;
  7                 set;
  8             }
  9             public CharNode Next   //下一节点
 10             {
 11                 get;
 12                 set;
 13             }
 14             public CharNode(char Char,CharNode next)
 15             {
 16                 this.Char = Char;
 17                 this.Next = next;
 18             }
 19         }
 20
 21         #endregion
 22
 23         #region 链队类
 24         /// <summary>
 25         /// 链队
 26         /// </summary>
 27         class CharQueue
 28         {
 29             CharNode front;  //队头
 30             CharNode rear;   //队尾
 31             /// <summary>
 32             /// 进队
 33             /// </summary>
 34             /// <param name="Char">节点字符</param>
 35             public void In(char Char)
 36             {
 37                 if(rear==null)
 38                 {
 39                     rear= new CharNode(Char, null);      //创建队头节点
 40                     front = rear;
 41                 }
 42                 else
 43                 {
 44                     rear.Next = new CharNode(Char, null);     //创建队尾
 45                     rear = rear.Next;
 46                 }
 47             }
 48
 49             /// <summary>
 50             /// 出队
 51             /// </summary>
 52             /// <returns></returns>
 53             public char? Out()
 54             {
 55                 if(front==null)
 56                 {
 57                     return null;
 58                 }
 59
 60                 char Char = front.Char;
 61                 front = front.Next;
 62                 if (front == null)
 63                     rear = null;
 64
 65                 return Char;
 66
 67             }
 68
 69         }
 70         #endregion
 71
 72         #region 链栈类
 73         public class CharStack
 74         {
 75             CharNode top;
 76             /// <summary>
 77             /// 进栈
 78             /// </summary>
 79             /// <param name="Char">节点字符</param>
 80             public void Push(char Char)
 81             {
 82
 83                 if(top==null)
 84                 {
 85                     top = new CharNode(Char, null);
 86                 }
 87                 else
 88                 {
 89                     top = new CharNode(Char, top);
 90                 }
 91             }
 92             /// <summary>
 93             /// 出栈
 94             /// </summary>
 95             /// <returns></returns>
 96             public char? Pop()   //?代表可以返回null
 97             {
 98                 if (this.top == null)
 99                     return null;
100                 else
101                 {
102                     char Char = top.Char;
103                     top = top.Next;
104                     return Char;
105                 }
106             }
107         }
108
109         #endregion
110         static void Main(string[] args)
111         {
112             Console.WriteLine("pls input one string:");
113             string str = Console.ReadLine();
114             CharStack stack = new CharStack();   //实例化栈
115             CharQueue queue = new CharQueue();   //实例化队
116
117             char? charStack, charQueue;
118
119             foreach(char Char in str)
120             {
121                 queue.In(Char);     //进队
122                 stack.Push(Char);   //进栈
123             }
124
125             do
126             {
127                 charQueue = queue.Out();  //出队
128                 charStack = stack.Pop();   //出栈
129
130                 if (charQueue != charStack)
131                     break;
132             }
133             while (charQueue != null && charStack != null);
134
135             if(charQueue!=null||charStack!=null)
136             {
137                 Console.WriteLine("{0} is not 回文",str);
138             }
139             else
140             {
141                 Console.WriteLine("{0} is 回文 ",str);
142             }
143
144             Console.ReadLine();
145
146         }

View Code

转载于:https://www.cnblogs.com/bloomalone/p/3730093.html

判断一个字符串是否为回文-链队(新建,进队,出队),链栈(新建,进栈,出栈)...相关推荐

  1. 回文指的是一个字符串从前面读和从后面读都一样,编写一个算法判断一个字符串是否为回文。

    回文指的是一个字符串从前面读和从后面读都一样,编写一个算法判断一个字符串是否为回文. 要求: 1)采用链栈实现算法: 2)从键盘输入一个字符串,输出判断结果. 算法思路: 根据栈的后进先出的特点,编写 ...

  2. c语言用递归法判断回文字符串,递归方式判断一个字符串是否为回文字符串

    /* * 递归方式判断一个字符串是否为回文字符串 */ public class PartitionTest{ public static void main(String[] args) { Str ...

  3. c语言判断回文字符串递归,用递归实现判断一个字符串是否为回文串

    //用递归实现判断一个字符串是否为回文串 import java.util.Scanner; public class Palindrome { //判断是否为回文串 in型参数代表字符串起止位置 p ...

  4. 判断一个字符串是否为“回文”

    编写一个程序,判断一个字符串是否为"回文"(顺读和倒读都一样的字符串称为"回文"),并分析算法的时间复杂度 #include <stdio.h> # ...

  5. c语言程序判断一个字符串是否是回文数,详解判断回文字符串和回文数算法的C语言代码!...

    一.判断一个字符串是否为回文字符串 #include #include #include //包含strlen #define YES 1 #define NO  0 #define uchar un ...

  6. Php判断一个字符串是否回文,PHP:判断一个字符串是否为回文字符串

    所谓回文字符串,兴许有很多人并不知晓是什么意思.其实呢,回文字符串就是从左往右看和从右往左看是一样的,就如同"CDDC"这样的例子.这么说,不知道大家明白没有.废话呢,也就不多说了 ...

  7. 判断一个字符串是否是回文

    [问题描述] 编写一个程序,判断一个字符串是否为"回文"(顺读和倒读都一样的字符串称为"回文"). [输入形式] 长度小于100的任意字符串 [输出形式] 如果 ...

  8. 用C语言去判断一个字符串是否为回文字符串(简单明了)

    C语言判断回文字符串呀 hello,小伙伴们.好久没写文章了,今天我们来写一下如何用C语言判断字符串是不是回文字符串呢. 大致思路:将字符串逆序赋给另一个字符串,然后比较这两个字符串是否相同.(其实也 ...

  9. 判断一个字符串是否为回文的递归算法

    //编译器:GCC 4.2.1 运行环境:Redflag Linux 6.0 Desktop //如果在VC++下编译可能要加入string和algorithm两个头文件并修改函数返回值类型 #inc ...

最新文章

  1. 精灵图 html为什么会变大,[html] 第128天 精灵图和base64如何选择呢?
  2. 【HDOJ】1754 I Hate It
  3. Boost:BOOST_VERIFY扩展的用法测试程序
  4. js延迟加载优化页面响应速度
  5. Android程序设计报告总结,Android编程常用技巧实例总结
  6. 盘点语音识别技术在人工智能中的应用
  7. 21 PagerTabStrip-PagerTitleStrip-viewPager
  8. ubuntu18.04 64位安装itunes12
  9. android listview 获取viewholder,Android ViewHolder 的基本使用
  10. 现代信号处理 张贤达_清华大学信号处理著名学者张贤达去世,享年74岁
  11. 计算机技术对艺术设计的影响,计算机对艺术设计有何影响
  12. 置信区间(confidence interval)
  13. SDN相关组织之ODL(opendaylight)
  14. HC-SRF04超声波测距传感器+Proteus仿真(附源码与仿真电路)
  15. jQuery大法第五式--动画效果
  16. (综述)微信聊天记录导出制作年度报告方法和相关软件
  17. 无人机大面积航测面临的难点及解决方法
  18. 【java面试经(架构师设计师)-第9课】网络编程校验方法和加密算法
  19. ServerThread
  20. 基于OpenPose的坐姿识别

热门文章

  1. 炸窝(Collections当中的addAll方法)
  2. 使用mocha进行测试 区块链
  3. H264 流媒体 编码汇总
  4. 在移动互联网上赚钱,行不行
  5. MinGW下编译ffmpeg静态库给Visual C++使用
  6. 中国消费者为何不愿为App付费?
  7. git 查看远程仓库地址
  8. IDEA 2018 集成 MyBatis Generator 插件 详解、代码生成
  9. 从零开始玩转 logback、完整配置详解
  10. mysql 5.5 安装配置方法图文教程