转载请注明出处:http://blog.csdn.net/ns_code/article/details/25028525
剑指offer上的第五题,在九度OJ上測试通过。
- 题目描写叙述:
输入一个链表。从尾到头打印链表每一个节点的值。
- 输入:
每一个输入文件仅包括一组測试例子。
每一组測试案例包括多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完成。-1本身不属于链表。
- 输出:
相应每一个測试案例,以从尾到头的顺序输出链表每一个节点的值。每一个值占一行。
- 例子输入:
1 2 3 4 5 -1
- 例子输出:
5 4 3 2 1
AC代码例如以下:
#include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct Node { ElemType data; struct Node *next; }Node,*pNode; /* 递归从尾到头打印单链表 */ void PrintListReverse(pNode pHead) { if(pHead == NULL) return; if(pHead->next != NULL) PrintListReverse(pHead->next); printf("%d ",pHead->data); } pNode CreateList() { ElemType val; pNode pHead = NULL; pNode pCur = NULL; do { scanf("%d",&val); if(val != -1) { pNode pNew = (pNode)malloc(sizeof(Node)); if(pNew == NULL) exit(EXIT_FAILURE); pNew->data = val; pNew->next = NULL; if(pHead == NULL) { pHead = pNew; pCur = pHead; } else { pCur->next = pNew; pCur = pCur->next; } } }while(val != -1); return pHead; } void DestroyList(pNode pHead) { if(pHead == NULL) return; pNode p = NULL; while(pHead != NULL) { p = pHead->next; free(pHead); pHead = p; } } int main() { pNode pHead = CreateList(); PrintListReverse(pHead); DestroyList(pHead); return 0; }
/**************************************************************
Problem: 1511
User: mmc_maodun
Language: C
Result: Accepted
Time:100 ms
Memory:5440 kb
****************************************************************/
版权声明:本文博主原创文章。博客,未经同意不得转载。