1 /*1.递归解决*/ 2 bool reversePrintA(List_Node * listNode) 3 { 4 if(NULL == listNode) 5 { 6 return false; 7 } 8 9 if(NULL != listNode->next) 10 { 11 reversePrintA(listNode->next); 12 } 13 printf("%d ", listNode->value); 14 return true; 15 } 16 /*2.使用栈*/ 17 bool reversePrintB(List_Node * listNode) 18 { 19 int listNum = 0; 20 int listValue[30]; 21 22 if(NULL == listNode) 23 { 24 return false; 25 } 26 27 while(listNode->next != NULL) 28 { 29 listValue[listNum++] = listNode->value; 30 listNode = listNode->next; 31 } 32 33 listValue[listNum] = listNode->value; 34 35 for(;listNum >= 0; listNum--) 36 { 37 printf("%d ", listValue[listNum]); 38 } 39 40 return true; 41 }
使用递归的好处是:代码简洁;但是链表过大,嵌套过深,会导致栈溢出;使用栈的好处是:不需要担心栈溢出,典型的空间换时间,需要额外的存储空间。