[算法]链表的逆序遍历节点
生活随笔
收集整理的這篇文章主要介紹了
[算法]链表的逆序遍历节点
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
有一個(gè)鏈表,知道鏈表頭,怎么逆序打印出鏈表每個(gè)節(jié)點(diǎn)的值。
我們知道,當(dāng)知道了鏈表頭的時(shí)候,很容易順序訪問(wèn)所有節(jié)點(diǎn)的值,但是如何逆序訪問(wèn)所有節(jié)點(diǎn)呢?
訪問(wèn)一棵二叉樹(shù),通常可以深度優(yōu)先和廣度優(yōu)先訪問(wèn)每個(gè)節(jié)點(diǎn),深度優(yōu)先又分為先序,中序和后續(xù)遍歷,后續(xù)遍歷就是先訪問(wèn)樹(shù)的右子樹(shù),再訪問(wèn)左子樹(shù),最后訪問(wèn)父節(jié)點(diǎn),如果我們把一個(gè)鏈表看成是一顆單叉樹(shù),利用樹(shù)的后續(xù)遍歷就達(dá)到了逆序訪問(wèn)鏈表的每個(gè)節(jié)點(diǎn),利用遞歸,實(shí)現(xiàn)代碼如下:
struct node {int val;node* next; }; void travel(node*head) {if(head && head->next){travel(head->next);}if(head)printf("val=%d\n",head->val); }node* head = new node;head->next=NULL;head->val = 0;node *h=head;for(int i=1;i<10;i++){node *nd = new node;nd->val = i;nd->next = NULL;h->next = nd;h = nd;}travel(head);
?
總結(jié)
以上是生活随笔為你收集整理的[算法]链表的逆序遍历节点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [搜索]一种分词的实现(2)
- 下一篇: Linux GCC lib库相互引用,互