判斷乙個棧是不是「回文」。回文,英文palindrome,指順著讀和反過來讀都一樣。
由棧的資料結構可知,棧是乙個先進後出的資料結構,因此為了判斷該棧是否是乙個回文棧,我們可以將棧的一半彈出來,壓入另外乙個棧,然後再進行判斷他們對於資料是否相同即可。當棧的長度為偶數時:
我們只需要彈出一半的資料,然後可直接進行比較。
當棧的長度為奇數時,我們需要彈出一半的長度,然後在比較前需要將最中間的一位去掉。
#include#include#define maxsize 100
using namespace std;
typedef char elemtype;
typedef struct stackstack;
typedef stack *stackpointer;
bool initstack(stackpointer stack)
bool push(stackpointer stack, elemtype elem)
elemtype pop(stackpointer stack)
bool stackispalindom(stackpointer stack)
if(length % 2)
pop(stack);
count = 0;
while(count < length/2)
return true;
}int main()stack;
typedef stack *stackpointer;
bool initstack(stackpointer stack)
bool push(stackpointer stack, elemtype elem)
elemtype pop(stackpointer stack)
bool stackispalindom(stackpointer stack, char *s)
return true;
}int main()
回文判斷(棧 佇列)
我們把正讀和反讀都相同的字串行稱為 回文 例如abba和abcba是回文,abcde不是回文。嘗試寫乙個演算法判別讀入的乙個以 為結束符的字元是否是回文。輸入格式 輸入為一行,為待判斷的字串,以 結尾。字串長度不超過 100100,除最後乙個字元外,其餘字元均由小寫字母組成。輸出格式 輸出一行,如果...
棧和佇列判斷回文數
假設稱正讀和反讀都相同的字串行為 回文 例如 abba 和 abcba 是回文,abcde ababab 則不是回文,試編寫演算法判別讀入的乙個以 為結束符的字串行是否為 回文 由於依次輸入的字串行中不含特殊的分隔符,則在判別是否是回文時,可以同時利用棧和佇列兩種結構來實現。include incl...
棧判斷字串回文
手寫棧 include includeusing namespace std 搞乙個棧結構體 struct stack int main 因為當字串為偶數時,mid 1就是後半段字串,但是為奇數時,mid 2才是後半段字串 if len 2 1 開始迴圈依次出棧跟後續字串比較即可 while s.t...