逆向遍历链表
Posted wangchaomahan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逆向遍历链表相关的知识,希望对你有一定的参考价值。
1 #include <stdio.h> 2 #include <stdlib.h> 3 /* 4 从尾到头打印链表。 5 思路:利用递归调用逐级返回的特性,也就是栈的特性:先进后出,后进先出。 6 */ 7 typedef struct node 8 { 9 int data; 10 struct node * next; 11 }NODE; 12 NODE * createList() 13 { 14 NODE * head = (NODE *)malloc(sizeof(NODE)); 15 head->next = NULL; 16 17 return head; 18 } 19 void insertNode(NODE *head,int insertData) 20 { 21 NODE * sur = (NODE *)malloc(sizeof(NODE)); 22 sur->data = insertData; 23 24 sur->next = head->next; 25 head->next = sur; 26 27 } 28 void traverList(NODE *head) 29 { 30 int i = 1; 31 head = head->next; 32 while(head) 33 { 34 printf("第%d结点 = %d ",i,head->data); 35 head = head->next; 36 i++; 37 } 38 } 39 //逆向遍历 40 void RtraverList(NODE *head) 41 { 42 if(head == NULL) 43 return ; 44 else 45 { 46 RtraverList(head->next); 47 printf("%d ",head->data); 48 } 49 } 50 51 52 int main(void) 53 { 54 NODE *head = createList(); 55 for(int i = 0;i<5;i++) 56 insertNode(head,rand()%100); 57 traverList(head); 58 printf("逆向遍历 "); 59 head = head->next;//逆向遍历注意点:头结点的数据域为空,所以要提前跳过头结点。不然递归逐级返回会打印头结点的数据域。 60 RtraverList(head); 61 return 0; 62 }
以上是关于逆向遍历链表的主要内容,如果未能解决你的问题,请参考以下文章
NC41 最长无重复子数组/NC133链表的奇偶重排/NC116把数字翻译成字符串/NC135 股票交易的最大收益/NC126换钱的最少货币数/NC45实现二叉树先序,中序和后序遍历(递归)(代码片段