C# 自定义堆栈进行回文检测转自:http://blog.csdn.net/haifengzhilian/article/details/8848477
using System; using System.Collections; namespace CStack { class Program { static void Main(string[] args) { CStack alist = new CStack(); string ch; string word = "上海自来水来自海上"; bool isPalindrome = true; for (int x = 0; x < word.Length; x++) { alist.Push(word.Substring(x,1)); } int pos = 0; while (alist.Count > 0) { ch = alist.Pop().ToString(); if (ch !=word.Substring(pos,1)) { isPalindrome = false; break; } pos++; } Console.WriteLine(isPalindrome); } } public class CStack { private int p_index; private ArrayList list; public CStack() { list = new ArrayList(); p_index = -1; } public int Count { get { return list.Count; } } public void Push(object item) { list.Add(item); p_index++; } public object Pop() { if (0 > p_index) { return null; } object obj = list[p_index]; list.RemoveAt(p_index); p_index--; return obj; } public void Clear() { list.Clear(); p_index = -1; } public object Peek() { if (p_index < 0) { return null; } return list[p_index]; } } }