我們把正讀和反讀都相同的字串行稱為「回文」,例如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 不是回文 分析 本題的話,我們可以利用棧。棧彈出...