首页 > 代码库 > 建立链表并逆序打印该链表
建立链表并逆序打印该链表
下面程序有几个地方注意一下,见注释.
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 /*以后写结构体,都使用该格式.即typedef标注.上下ListNode要相同.*/ 5 typedef struct ListNode 6 { 7 int key; 8 struct ListNode *next; 9 } ListNode;10 11 static ListNode *create_list();12 static void print_list(ListNode *);13 static void reverse_print(ListNode *);14 15 int main(int argc, char *argv[])16 {17 ListNode *head = NULL;
/*不能直接使用create_list(head),想想为什么?
**函数调用时,参数的传递相当于赋值.不能将空指针赋值给其他指针.*/18 head = create_list();19 print_list(head);20 21 reverse_print(head);22 printf("\n");23 return 0;24 }25 26 static ListNode *create_list()27 {28 int c;29 ListNode *p;30 31 head = (ListNode *)malloc(sizeof(ListNode));32 head->next = NULL;33 p = head;34 35 scanf("%d", &c);36 while (c != -1)37 {38 p->next = (ListNode *)malloc(sizeof(ListNode));39 p->next->key = c;40 p->next->next = NULL;41 p = p->next;42 scanf("%d", &c);43 }44 return head;45 }46 47 48 static void print_list(ListNode *head)49 {50 ListNode *p;51 p = head->next;52 53 while (p != NULL)54 {55 printf("%d ", p->key);56 p = p->next;57 }58 printf("\n");59 }60 /*该递归调用好好品品.*/61 static void reverse_print(ListNode *head)62 {63 ListNode *p;64 65 p = head->next;66 if (p == NULL)67 {68 return;69 }70 else71 {72 reverse_print(p);73 }74 75 printf("%d ", p->key);76 }
建立链表并逆序打印该链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。