/* * c.cpp * * Created on: 2013-10-7 * Author: wangzhu */ #include<cstdio> #include<stack> #include<iostream> using namespace std; struct Node { int key; Node* next; }; /** * 尾插法:超时 */ void addToTail(Node* root, int value) { Node* node = new Node(); node->key = value; node->next = NULL; if (root->next == NULL) { root->next = node; } else { Node* tempNode = root->next; while (tempNode->next != NULL) { tempNode = tempNode->next; } tempNode->next = node; } } /** * 头插法:Accepted */ void addTohead(Node *root, int value) { Node* tempNode = root->next; Node* node = new Node; node->key = value; node->next = tempNode; root->next = node; } void printToStack(Node* root) { stack<Node*> nodeStack; Node* tempNode = root->next; while (tempNode != NULL) { nodeStack.push(tempNode); tempNode = tempNode->next; } while (!nodeStack.empty()) { tempNode = nodeStack.top(); printf("%d\n", tempNode->key); nodeStack.pop(); } } void diqu(Node* node) { if (node != NULL) { if (node->next != NULL) { diqu(node->next); } printf("%d\n", node->key); } } void print(Node *node) { while (node != NULL) { printf("%d\n", node->key); node = node->next; } } int main() { freopen("data.in", "r", stdin); int n; Node* root = new Node(); root->next = NULL; while(~scanf("%d",&n)) { if( 0 > n) { break; } //addToTail(root,n); addTohead(root,n); } //printToStack(root); print(root->next); return 0; }