[剑指Offer]7.从尾到头打印链表

0
0
0
1. 云栖社区>
2. 博客>
3. 正文

## [剑指Offer]7.从尾到头打印链表

sjf0115 2013-10-18 21:50:00 浏览1132

1
2
3
4
5
-1

5
4
3
2
1
【代码】

/*********************************
*   日期：2013-10-18
*   作者：SJF0115
*   题号: 九度OJ 题目1511：从尾到头打印链表
*   来源：http://ac.jobdu.com/problem.php?pid=1511
*   结果：AC
*   来源：剑指Offer
*   总结：
**********************************/
#include<iostream>
#include<malloc.h>
#include<stdio.h>
#include<stack>
using namespace std;

typedef struct ListNode{
int value;
struct ListNode *next;
}ListNode;

//从尾到头输出链表
stack<int> stack;
ListNode *p;
//遍历链表，把每个节点数值添加到栈中
while(p != NULL){
stack.push(p->value);
p = p->next;
}
//输出栈
while(!stack.empty()){
printf("%d\n",stack.top());
stack.pop();
}
return 0;
}

int main()
{
int i,n;
//初始化
ListNode *p;
while(scanf("%d",&n)!= EOF){
//n = -1一个测试用例的结束
if(n != -1){
//创建链表
ListNode *newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->value = n;
newNode->next = p->next;
p->next = newNode;
p = newNode;
}
//输出
else{
while(p != NULL){
printf("%d\n",p->value);
p = p->next;
}*/
//从尾到头输出
//初始化
}
}
return 0;
}

【解析】

/*---------------------------------------
*   日期：2015-07-20
*   作者：SJF0115
*   题目: 7.从尾到头打印链表
*   结果：AC
*   网址：http://www.nowcoder.com/books/coding-interviews/d0267f7f55b3412ba93bd35cfa8e8035?rp=1
*   来源：剑指Offer
*   博客：
-----------------------------------------*/
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;

struct ListNode{
int val;
ListNode *next;
ListNode(int x):val(x),next(nullptr){}
};

class Solution {
public:
vector<int> result;
// 递归实现
return result;
}
private:
}//if
}//if
}
};

int main(){
Solution s;
ListNode* root = new ListNode(1);
ListNode* node1 = new ListNode(2);
ListNode* node2 = new ListNode(3);
ListNode* node3 = new ListNode(4);
ListNode* node4 = new ListNode(5);
root->next = node1;
node1->next = node2;
node2->next = node3;
node3->next = node4;
for(int i = 0;i < result.size();++i){
cout<<result[i]<<endl;
}//for
return 0;
}

/*---------------------------------------
*   日期：2015-07-20
*   作者：SJF0115
*   题目: 7.从尾到头打印链表
*   结果：AC
*   网址：http://www.nowcoder.com/books/coding-interviews/d0267f7f55b3412ba93bd35cfa8e8035?rp=1
*   来源：剑指Offer
*   博客：
-----------------------------------------*/
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;

struct ListNode{
int val;
ListNode *next;
ListNode(int x):val(x),next(nullptr){}
};

class Solution {
public:
vector<int> result;
while(p){
result.insert(result.begin(),p->val);
p = p->next;
}//while
return result;
}
};

int main(){
Solution s;
ListNode* root = new ListNode(1);
ListNode* node1 = new ListNode(2);
ListNode* node2 = new ListNode(3);
ListNode* node3 = new ListNode(4);
ListNode* node4 = new ListNode(5);
root->next = node1;
node1->next = node2;
node2->next = node3;
node3->next = node4;
for(int i = 0;i < result.size();++i){
cout<<result[i]<<endl;
}//for
return 0;
}

sjf0115
+ 关注

corcosa 15096人浏览