題目:輸入乙個鍊錶(無環單鏈表)的頭結點,從尾到頭反過來輸出每個結點的值。鍊錶結點定義如下:
typedef struct listnode
node;
方法有多種:
方法1. 鍊錶逆序,然後遍歷輸出,改變了鍊錶指標,而且操作麻煩.
方法2. 利用棧先進後出的特性, 需要銷號額外空間,增加出棧入棧**.
方法3. 原理同方法2, 用遞迴的方法. 操作簡便.
/* 方法1: 先煉表逆序,再遍歷輸出 */
node* reverselist(node* head)
else
preversedhead = cursor;
cursor = next;
}cursor = preversedhead;
while(p!=null)
printf("\n");
return preversedhead;
}/* 方法2: 利用棧實現 */
void reverseoutput2(node* head)
while( !stack_is_empty() )
printf("\n");
}/* 方法3: 遞迴呼叫 */
void reverseoutput2(node* head)
}
從尾到頭輸出鍊錶
題目 輸入乙個鍊錶的頭結點,從尾到頭反過來輸出每個結點的值。鍊錶結點定義如下 struct listnode 分析 這是一道很有意思的面試題。該題以及它的變體經常出現在各大公司的面試 筆試題中。看到這道題後,第一反應是從頭到尾輸出比較簡單。於是很自然地想到把鍊錶中鏈結結點的指標反轉過來,改變鍊錶的方...
從尾到頭輸出鍊錶
題目 輸入乙個鍊錶的頭結點,從尾到頭反過來輸出每個結點的值。鍊錶結點定義如下 struct listnode int m nkey listnode m pnext 分析 這是一道很有意思的面試題。該題以及它的變體經常出現在各大公司的面試 筆試題中。看到這道題後,第一反應是從頭到尾輸出比較簡單。於是...
從尾到頭輸出鍊錶
題目 輸入乙個煉表頭結點,從尾到頭反過來輸出每個結點的值。鍊錶結點定義如下 struct listnode 這裡我們使用另一種更為簡單的方法 遞迴 include stdafx.h include include using namespace std struct listnode 構造鍊錶 vo...