首页 > 代码库 > 每天一个小算法(3)----倒序打印链表
每天一个小算法(3)----倒序打印链表
这个比较简单,用栈、递归、倒转链表都可以实现,不再过多解释。
代码使用递归实现
1 #include <stdio.h> 2 #include <time.h> 3 #include <stdlib.h> 4 typedef struct Node 5 { 6 int data; 7 Node* next; 8 }Node, *List; 9 10 11 List createList(int num) //随机生成数字,构造链表 12 { 13 List aList = (List)malloc(sizeof(Node)); 14 aList->next = NULL; 15 aList->data = http://www.mamicode.com/0; 16 Node* qT = aList; 17 18 // srand((int)time(0)); 19 for ( int i=0; i< num; ++i) 20 { 21 Node* pTN = (Node*)malloc(sizeof(Node)); 22 pTN->data = http://www.mamicode.com/rand()%100; 23 pTN->next = NULL; 24 qT->next = pTN; 25 qT = pTN; 26 } 27 return aList; 28 } 29 30 void printList(List aList) //正序打印链表 31 { 32 if ( aList == NULL || aList->next == NULL ) 33 return; 34 35 Node* pT = aList->next; 36 printf("element of the list:\n\t"); 37 while( pT != NULL ) 38 { 39 printf("%d ", pT->data); 40 pT = pT->next; 41 } 42 43 printf("\n"); 44 } 45 46 void reversePrintList(List aList) //倒序打印链表 47 { 48 if ( aList == NULL ) 49 return; 50 51 reversePrintList(aList->next); 52 printf("%d ", aList->data); 53 } 54 55 void deleteList(List aList) //删除链表 56 {} 57 58 int main(int argc, char const *argv[]) 59 { 60 srand((int)time(0)); 61 List aList = createList(7); 62 printList(aList); 63 printf("reverse print the list:\n\t"); 64 reversePrintList(aList->next); 65 printf("\n"); 66 67 deleteList(aList); 68 69 return 0; 70 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。