判断一个字符串是否为回文-链队(新建,进队,出队),链栈(新建,进栈,出栈)...
回文:字符对称排列的字符串,例如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)采用链栈实现算法: 2)从键盘输入一个字符串,输出判断结果. 算法思路: 根据栈的后进先出的特点,编写 ...
- c语言用递归法判断回文字符串,递归方式判断一个字符串是否为回文字符串
/* * 递归方式判断一个字符串是否为回文字符串 */ public class PartitionTest{ public static void main(String[] args) { Str ...
- c语言判断回文字符串递归,用递归实现判断一个字符串是否为回文串
//用递归实现判断一个字符串是否为回文串 import java.util.Scanner; public class Palindrome { //判断是否为回文串 in型参数代表字符串起止位置 p ...
- 判断一个字符串是否为“回文”
编写一个程序,判断一个字符串是否为"回文"(顺读和倒读都一样的字符串称为"回文"),并分析算法的时间复杂度 #include <stdio.h> # ...
- c语言程序判断一个字符串是否是回文数,详解判断回文字符串和回文数算法的C语言代码!...
一.判断一个字符串是否为回文字符串 #include #include #include //包含strlen #define YES 1 #define NO 0 #define uchar un ...
- Php判断一个字符串是否回文,PHP:判断一个字符串是否为回文字符串
所谓回文字符串,兴许有很多人并不知晓是什么意思.其实呢,回文字符串就是从左往右看和从右往左看是一样的,就如同"CDDC"这样的例子.这么说,不知道大家明白没有.废话呢,也就不多说了 ...
- 判断一个字符串是否是回文
[问题描述] 编写一个程序,判断一个字符串是否为"回文"(顺读和倒读都一样的字符串称为"回文"). [输入形式] 长度小于100的任意字符串 [输出形式] 如果 ...
- 用C语言去判断一个字符串是否为回文字符串(简单明了)
C语言判断回文字符串呀 hello,小伙伴们.好久没写文章了,今天我们来写一下如何用C语言判断字符串是不是回文字符串呢. 大致思路:将字符串逆序赋给另一个字符串,然后比较这两个字符串是否相同.(其实也 ...
- 判断一个字符串是否为回文的递归算法
//编译器:GCC 4.2.1 运行环境:Redflag Linux 6.0 Desktop //如果在VC++下编译可能要加入string和algorithm两个头文件并修改函数返回值类型 #inc ...
最新文章
- 精灵图 html为什么会变大,[html] 第128天 精灵图和base64如何选择呢?
- 【HDOJ】1754 I Hate It
- Boost:BOOST_VERIFY扩展的用法测试程序
- js延迟加载优化页面响应速度
- Android程序设计报告总结,Android编程常用技巧实例总结
- 盘点语音识别技术在人工智能中的应用
- 21 PagerTabStrip-PagerTitleStrip-viewPager
- ubuntu18.04 64位安装itunes12
- android listview 获取viewholder,Android ViewHolder 的基本使用
- 现代信号处理 张贤达_清华大学信号处理著名学者张贤达去世,享年74岁
- 计算机技术对艺术设计的影响,计算机对艺术设计有何影响
- 置信区间(confidence interval)
- SDN相关组织之ODL(opendaylight)
- HC-SRF04超声波测距传感器+Proteus仿真(附源码与仿真电路)
- jQuery大法第五式--动画效果
- (综述)微信聊天记录导出制作年度报告方法和相关软件
- 无人机大面积航测面临的难点及解决方法
- 【java面试经(架构师设计师)-第9课】网络编程校验方法和加密算法
- ServerThread
- 基于OpenPose的坐姿识别