Programming Practice

迴文 (palindrome) 是一個從前面讀和從後面讀都是一樣的字串。例如,abcdedcbavollov945626549 都是迴文;但是 abcd123456123456abcdefghfdecba 都不是迴文。在這個網站上,你可看到很都有趣的迴文, http://www.palindromelist.net/ (檢查時須先將空白和標點符號移除,再將所有字母改為全部大寫或小寫)。寫一個 C 語言的專案程式,使用一個迴圈重複執行以下的迴文程式直到讀入的字串為 000

  1. 讀入一個字串,

  2. 檢查並報告所輸入的字串是否為迴文。

使用兩個堆疊和下列的演算法檢查一個字串是否為迴文:

  1. 將字串的所有字元依序從第一個字元開始到最後一個字元放入第一個堆疊。

  2. 將第一個堆疊倒放到第二個堆疊,同時需保留第一個堆疊的內容。

  3. 比較兩個堆疊的內容是否相同。如果內容相同則該字串是一個迴文;否則,該字串不是一個迴文。

你的程式需使用堆疊運算寫兩個副程式:

  1. void reverseStack(stack *s1, stack *s2):將堆疊 s1 的內容反向倒放到堆疊 s2,同時保留 s1 的內容。

  2. int isPalindrome(char *str):檢查字串 str 是否為迴文。

你可使用既有的堆疊程式 stack_array.hstack_array.c。以下為程式執行範例:

Enter a string: abcdedcba

 

**** abcdedcba is a palindrome.

 

------------------------------------------------

 

Enter a string: 945626549

 

**** 945626549 is a palindrome.

 

------------------------------------------------

 

Enter a string: abcd

 

**** abcd is a not palindrome.

 

------------------------------------------------

 

Enter a string: 000