首页 > 代码库 > 从尾到头打印单链表
从尾到头打印单链表
转载请注明出处:http://blog.csdn.net/ns_code/article/details/25028525
剑指offer上的第五题,在九度OJ上测试通过。
时间限制:1 秒
内存限制:128 兆
- 题目描述:
输入一个链表,从尾到头打印链表每个节点的值。
- 输入:
每个输入文件仅包含一组测试样例。
每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。
- 输出:
对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。
- 样例输入:
12345-1
- 样例输出:
54321
- 这里采用递归打印的方法。
AC代码如下:
[cpp] view plain copy
- #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\n",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;
- }
从尾到头打印单链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。