此題是殷人昆編著的《資料結構(c語言描述)》中佇列的題目,頁碼84.
題:給出乙個字串行,判斷它是否是回文。回文是指乙個字串行以中間字元為基準,兩側字元完全對稱相等。例如,字串行「abcba」或「abccba」即為回文,而「abcdefg」就不是回文。
解:可以利用乙個佇列和乙個棧來解決問題。首先把給定的字串行分別存入棧和佇列,然後分別從棧和佇列中各退出乙個字元,比較退佇列的字元和退棧的字元是否相等。若不相等,則該字串不是回文;若相等,則繼續從佇列和棧中各退出乙個字元,重複上述比較。如果佇列和棧同時為空,則說明對應字元全部相等,該字串是回文。
#include
#include
"stack.h"
#include
"queue.h"
typedef
char selemtype;
typedef
char qelemtype;
/*** 判斷字串str是否是回文。
* 輸入:
* char* str :字串頭指標
* 返回:
* 1:是回文
* 0:不是回文
*/int
roundstringjudge
(char
* str)
while(!
stackempty
(s)&&
!queueempty
(q))
return1;
}
演算法 回文檢測
有關鍊錶的回文檢測,用到的就是鍊錶操作中常常用到的雙指標的方法,找到鍊錶的中點位置,然後依次對比兩邊的結點。但是在找鍊錶的中點的時候要注意鍊錶的總個數是偶數或者奇數的兩種情況。1.找鍊錶的中點位置,並把中點以前的各個結點的值存入到棧中。2.針對偶數或者奇數個鍊錶結點,對中點結點做乙個小的調整。3.依...
回文字串檢測
回文是指這樣一種現象 乙個單詞 短語或數字,從前往後寫和從後往前寫都是一樣的。比如,單詞 dad racecar 就是回文 如果忽略空格和標點符號,下面這個句子也是回文,a man,a plan,a canal panama 數字1001也是回文。方法一 利用棧來實現 判斷是否是回文字串 定義乙個棧...
演算法 判斷是否為回文字串
問題 字串是否為回文字串,如abcba 單鏈表儲存 思路 快慢指標找到中間節點,並且在慢指標移動時改變node的指向。找到中間節點以後,從中間節點出發,前後遍歷比較值 步驟 1.判斷傳入節點是否為空,接下來節點是否為空 非空判斷 2.快慢指標移動,快指標正常移動,慢指標在移動時,改變node的指標方...