回文判斷(棧 佇列)

2021-10-17 05:28:13 字數 1320 閱讀 4430

我們把正讀和反讀都相同的字串行稱為「回文」,例如abba和abcba是回文,abcde不是回文。嘗試寫乙個演算法判別讀入的乙個以@為結束符的字元是否是回文。

輸入格式

輸入為一行,為待判斷的字串,以@結尾。字串長度不超過 100100,除最後乙個字元外,其餘字元均由小寫字母組成。

輸出格式

輸出一行,如果輸入的字串是回文,則輸出true;如果輸入的字串不是回文,則輸出false。

#include #include #include #define error 0

#define ok 1

typedef struct queuequeue;

void initq(queue *q, int length)

void pushq(queue *q, char element)

q->tail++;

q->data[q->tail] = element;

return ok;

}char out_putq(queue *q, char *s)

return s;

}void clearq(queue *q)

typedef struct stackstack;

void inits(stack *s, int size)

void pushs(stack *s, char element)

s->top_index++;

s->elements[s->top_index] = element;

return ok;

}int empty(stack *s)

char out_puts(stack *s, char *s2)

return s2;

}void clears(stack *s)

int main() , *s1 = , *s2 = ;

queue *queue = (queue *)malloc(sizeof(queue));

initq(queue, 100);

stack *stack = (stack *)malloc(sizeof(stack));

inits(stack, 100);

while ((s = getchar())!= '@')

s1 = out_putq(queue, s);

s2 = out_puts(stack, s);

if (s1 == s2) else

clearq(queue);

clears(stack);

return 0;

}

棧和佇列判斷回文數

假設稱正讀和反讀都相同的字串行為 回文 例如 abba 和 abcba 是回文,abcde ababab 則不是回文,試編寫演算法判別讀入的乙個以 為結束符的字串行是否為 回文 由於依次輸入的字串行中不含特殊的分隔符,則在判別是否是回文時,可以同時利用棧和佇列兩種結構來實現。include incl...

棧 回文判斷

判斷乙個棧是不是 回文 回文,英文palindrome,指順著讀和反過來讀都一樣。由棧的資料結構可知,棧是乙個先進後出的資料結構,因此為了判斷該棧是否是乙個回文棧,我們可以將棧的一半彈出來,壓入另外乙個棧,然後再進行判斷他們對於資料是否相同即可。當棧的長度為偶數時 我們只需要彈出一半的資料,然後可直...

回文 棧和佇列

題目描述 假設稱正讀和反讀都相同的字串行為 回文 例如,abba 和 abcba 是回文,abcde 和 ababab 則不是回文。試寫乙個演算法判別字串行是否是 回文 輸入abcba 輸出是回文 樣例輸入 copy ababab 樣例輸出 copy 不是回文 分析 本題的話,我們可以利用棧。棧彈出...