【剑指Offer面试题】 九度OJ1511:从尾到头打印链表

题目链接地址: ?pid=1511

从尾到头打印链表

时间限制:1 秒内存限制:128 兆特殊判题:否提交:6036解决:1817 题目描述: 输入一个链表,从尾到头打印链表每个节点的值。 输入: 每个输入文件仅包含一组测试样例。 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。 输出: 对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。 样例输入: 1 2 3 4 5 -1 样例输出: 5 4 3 2 1

分析:

方法一:借用栈倒序输出链表 链表在访问时总是从头开始访问,边访问边入栈,栈的特点就是先进后出,所以出栈时就是链表的反向输入。 方法二:递归实现,完美 每访问到一个结点,就递归访问输出后面的一个结点,然后再输出结点自身,最终就是反向输出。

方法二的九度AC实现:

/********************************* ———————————– 【剑指Offer面试题】从尾到头打印链表———————————– Author:牧之丶 Date:2015年Email:bzhou84@163.com **********************************/ ; typedef struct Node{int data;struct Node *next;}Node,*pNode;/*递归从尾到头打印单链表*/void PrintListReverse(pNode pHead){if(pHead == NULL)return;if(pHead->next != NULL)PrintListReverse(pHead->next);printf(“%d\n”,pHead->data);}pNode CreateList(){int val;pNode pHead = NULL;pNode pCur = NULL;do{scanf(“%d”,&val);if(val != -1){pNode pNew = (pNode)malloc(sizeof(Node));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;}int main(){pNode pHead = CreateList();PrintListReverse(pHead);return 0;}

,世俗的纷扰,生活的琐碎使人精疲力尽,

【剑指Offer面试题】 九度OJ1511:从尾到头打印链表

相关文章:

你感兴趣的文章:

标签云: