/* * c.cpp * * Created on: 2013-10-7 * Author: wangzhu */ #include<cstdio> #include<iostream> using namespace std; struct Node { int key; Node* next; }; void addToTail(Node* root, int val) { Node* node = new Node; node->key = val; node->next = NULL; if (root->next == NULL) { root->next = node; } else { Node* tempNode = root->next; Node* tempPNode = root; while (tempNode->next != NULL) { if (tempNode->key > val) { Node* temp = tempPNode->next; node->next = temp; tempPNode->next = node; return; } tempNode = tempNode->next; tempPNode = tempPNode->next; } if (tempNode->key > val) { Node* temp = tempPNode->next; node->next = temp; tempPNode->next = node; return; } tempNode->next = node; } } void printTail(Node* node) { while (node->next != NULL) { printf("%d ", node->key); node = node->next; } printf("%d ", node->key); } int main() { freopen("data.in", "r", stdin); int n,val; Node* root; while(~scanf("%d",&n)) { root = new Node; root->next = NULL; for(int i = 0;i < n;i++) { scanf("%d",&val); addToTail(root,val); } printTail(root->next); } return 0; }