码迷,mamicode.com
首页 > 其他好文 > 详细

逆向遍历链表

时间:2018-10-01 15:32:37      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:size   main   stdio.h   sizeof   特性   rand   str   链表   struct   

 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\n",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\n",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("逆向遍历\n");
59      head = head->next;//逆向遍历注意点:头结点的数据域为空,所以要提前跳过头结点。不然递归逐级返回会打印头结点的数据域。
60      RtraverList(head);
61      return 0;
62  }

 

逆向遍历链表

标签:size   main   stdio.h   sizeof   特性   rand   str   链表   struct   

原文地址:https://www.cnblogs.com/wangchaomahan/p/9734702.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!