[算法]链表的逆序遍历节点
生活随笔
收集整理的這篇文章主要介紹了
[算法]链表的逆序遍历节点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有一個鏈表,知道鏈表頭,怎么逆序打印出鏈表每個節點的值。
我們知道,當知道了鏈表頭的時候,很容易順序訪問所有節點的值,但是如何逆序訪問所有節點呢?
訪問一棵二叉樹,通常可以深度優先和廣度優先訪問每個節點,深度優先又分為先序,中序和后續遍歷,后續遍歷就是先訪問樹的右子樹,再訪問左子樹,最后訪問父節點,如果我們把一個鏈表看成是一顆單叉樹,利用樹的后續遍歷就達到了逆序訪問鏈表的每個節點,利用遞歸,實現代碼如下:
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);
?
總結
以上是生活随笔為你收集整理的[算法]链表的逆序遍历节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [搜索]一种分词的实现(2)
- 下一篇: Linux GCC lib库相互引用,互