Stack的实现必须采用一种基本结构来保存数据。因为再新数据项进栈的时候不需要担心调整表的大小,所以选择用arrayList.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections; namespace Data_structure_and_algorithm { 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() { object obj=list[p_index]; list.RemoveAt(p_index); p_index--; return obj; } public void clear() { list.Clear(); p_index = -1; } public object peek() { return list[p_index]; } } }
利用此类来实现判断回文数:
public static void CStackTest() { CStack alist = new CStack(); string ch; string word = "sees"; 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++; } if (isPalindrome) { Console.WriteLine(word + " is a palindrome"); } else { Console.WriteLine(word + " is not a palindrome"); } Console.Read(); }