-
题目地址:http://ac.jobdu.com/problem.php?pid=1151
-
输入一个链表,从尾到头打印链表每个节点的值。
题目描述:
-
输入:
-
每个输入文件仅包含一组测试样例。
每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。
-
输出:
-
对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。
-
样例输入:
-
1 2 3 4 5 -1
-
样例输出:
-
5 4 3 2 1
先进后出,可以用栈,也可以使用递归。
C++ AC
#include <stdio.h>
#include <malloc.h>
struct LinkedNode{
int data;
struct LinkedNode *next;
};
int data,i;
void printfNode(LinkedNode *p){
if(p->next!=NULL){
printfNode(p->next);
}
printf("%d\n",p->data);
}
int main(){
LinkedNode *node,*tail,*p;
node = (LinkedNode*)malloc(sizeof(LinkedNode));
node->next = NULL;
tail = node;
while(scanf("%d",&data) != EOF){
if(data == -1){
break;
}
p = (LinkedNode*)malloc(sizeof(LinkedNode));
p->data = data;
tail->next = p;
tail = p;
}
tail-> next = NULL;
printfNode(node->next);
return 0;
}
/**************************************************************
Problem: 1511
User: wangzhenqing
Language: C++
Result: Accepted
Time:90 ms
Memory:5544 kb
****************************************************************/
Java AC 栈
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.Stack;
public class Main {
/*
* 1181
*/
public static void main(String[] args) throws Exception {
StreamTokenizer st = new StreamTokenizer(new BufferedReader(
new InputStreamReader(System.in)));
Stack<Integer> stack = new Stack<Integer>();
while (true) {
st.nextToken();
int n = (int)st.nval;
if (n == -1) {
break;
}
stack.push(n);
}
StringBuffer sb = new StringBuffer();
while(!stack.isEmpty()){
sb.append(stack.pop()+"\n");
}
System.out.println(sb.toString().trim());
}
}
/**************************************************************
Problem: 1511
User: wangzhenqing
Language: Java
Result: Accepted
Time:1050 ms
Memory:61608 kb
****************************************************************/