棧 回文判斷

2021-07-02 05:34:32 字數 1016 閱讀 6346

判斷乙個棧是不是「回文」。回文,英文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...