2012-08-10 61 views
0

可能重複:
Single Linked List is Palindrome or not檢查迴文單鏈表

假設我有有一個char項的鏈接列表,我需要找到如果該鏈接列表中的字符是否是迴文。我知道鏈表並不是一個合適的結構,但是如果我們有一個該怎麼做?

a-b-c-b-a

一個雙向鏈表是容易的,我們可以用頭部和尾部開始的

ptrh=head ptrt=tail 
if(ptrh->item==ptrt->item) 

ptrh->ptrh->frwdlink 
ptrt->ptrt->bcklink 

但是,如果我們有一個單鏈表?那麼如何實現呢?

+0

您可以從編輯您的問題開始,刪除所有上限。你不需要在這裏喊,你看......人們可以閱讀。如果您想突出顯示某些內容,請使用粗體或類似的東西。 – Aftnix 2012-08-10 23:11:51

+0

@Annix什麼?你說什麼? – 2012-08-10 23:14:25

回答

4

知道列表的大小,你可以告訴中間是什麼。然後當你經過時,只需將所有的字符緩存到中間,並確保它們在中間後以相反的順序出現。

2

您可以在第一次瀏覽列表時按照節點的相反順序構建一個列表。

,然後比較前n /原來的2 + 1個節點和反轉列表

3

可以創建臨時數組?將鏈表中的所有項目放入數組中,然後比較索引n和索引(長度 - n)。

var ptr = head; var array = []; 

while (ptr != null) 
{ 
    array.push(ptr.item); 
    ptr = ptr.next; 
} 

for (var i = 0; i < array.length/2; i++) 
{ 
    if (array[i] != array[array.length - i]) 
    return (false); 
} 

return (true); 
+1

...並且不要忘記考慮奇數長度的數組。 – 2012-08-10 23:19:46