#include <stdio.h> typedef struct Node { int value; struct Node* next; } Node; int main() { int n; while (scanf("%d ", &n) != EOF) { // 注意 while 处理多个 case //带头节点 Node* head = (Node*)malloc(sizeof(Node)); Node* newNode, *p, *pre; head->value = 0; head->next = NULL; int newValue; for (int i = 0; i < n; i++) { //创建新节点 newNode = (Node*)malloc(sizeof(Node)); scanf("%d ", &newValue); newNode->value = newValue; newNode->next = NULL; //头插法 if (i == 0) { head->next = newNode; } else { pre = head; p = head->next; while (p != NULL && newValue > p->value) { pre=pre->next; p=p->next; } newNode->next=p; pre->next=newNode; } } p=head->next; while(p!=NULL){ printf("%d ",p->value); p=p->next; } printf("\n"); } return 0; }