劍指offer 從尾到頭列印鍊錶

2021-08-21 04:16:33 字數 1112 閱讀 9398

有三種方法:

第一種:採用設定乙個標誌結點的的方法。

先將標誌放在null,遍歷鍊錶如果cur->next==flag,那麼就將cur->data列印出來,然後將標誌前移,再次遍歷就可以列印倒數第二個資料,然後再將標誌前移,知道標誌,在頭結點plist位置

第二種:採用遞迴將其列印出來

但三種:採用棧的思想。

因為棧是先進後出,這剛好與這道題的思想一樣,最先的最後列印,那麼就可以用棧來進行編寫了

**如下:

#include #include #include typedef int datatype;

typedef struct linklist

node, *pnode, list, *plist;

void init(plist* pplist)

pnode buynode(datatype d)

void pushfront(plist* pplist, datatype d)

void print(plist plist)

else }

printf("over\n");

}//採用棧的方法列印

void printtailtoheadstack(plist plist)

; int top = 0;

int i = 0;

pnode cur = plist;

while (cur != null)

top--;

while (top >= 0)

printf("over\n");

}//採用遞迴的方法列印

void ptinttailtoheadrecursion(plist plist)

else

printf("%d\n", plist->data);

}//採用標誌的方法列印

void printtailtohead(plist plist)

printf("%d-->", cur->data);

flag = cur;

} printf("over\n");

}void test()

int main()

劍指Offer 從尾到頭列印鍊錶

題目1511 從尾到頭列印鍊錶 時間限制 1 秒 記憶體限制 128 兆 特殊判題 否 提交 1082 解決 350 題目描述 輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。輸入 每個輸入檔案僅包含一組測試樣例。每一組測試案例包含多行,每行乙個大於0的整數,代表乙個鍊錶的節點。第一行是鍊錶第乙個節點的...

劍指offer 從尾到頭列印鍊錶

輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。輸入描述 輸入為鍊錶的表頭 輸出描述 輸出為需要列印的 新鍊錶 的表頭 分析 題目本意是用的棧結構的先入後出,但是有了容器類的高階方法之後,使用棧的意義就不大了。c struct listnode class solution listnode p hea...

劍指Offer 從尾到頭列印鍊錶

輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。個人認為如果本題就只是列印的話,最好不要反轉鍊錶 你什麼時候見過列印函式改變資料結構了的 我的思路 儲存順序值,然後反轉。注意 1 reverse vprint.begin vprint.end algorithm的使用!2 重新構造。以上兩種衡量選擇。另...