有三種方法:
第一種:採用設定乙個標誌結點的的方法。
先將標誌放在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 重新構造。以上兩種衡量選擇。另...