题目1181:遍历链表
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:3435
解决:1445
- 题目描述:
-
建立一个升序链表并遍历输出。
- 输入:
-
输入的每个案例中第一行包括1个整数:n(1<=n<=1000),接下来的一行包括n个整数。
- 输出:
-
可能有多组测试数据,对于每组数据,
将n个整数建立升序链表,之后遍历链表并输出。
- 样例输入:
-
4 3 5 7 9
- 样例输出:
-
3 5 7 9
#include <iostream> #include <cstdio> #include <cstdlib> using namespace std; typedef struct node{ int data; struct node* next; } LinkNode, *LinkList; void traversal(LinkList L){ LinkNode* tmp = L->next; if(tmp != NULL) printf("%d", tmp->data); tmp = tmp->next; while(tmp != NULL){ printf(" %d", tmp->data); tmp = tmp->next; } printf(" "); } void creat(LinkList &L, int data){ LinkNode* temp = (LinkNode*)malloc(sizeof(LinkNode)); temp->data = data; temp->next = NULL; if(L->next == NULL){ L->next = temp; return; } LinkNode* cur = L->next, *pre = L; while(cur && cur->data < temp->data){ pre = cur; cur = cur->next; } if(cur == NULL){ temp->next = cur; pre->next = temp; } else { temp->next = cur; pre->next = temp; } return; } int main(){ int n; while(scanf("%d", &n) != EOF){ LinkList L; L->next = NULL; int num; for(int i = 0; i < n; i++){ scanf("%d", &num); creat(L, num); } traversal(L); } return 0; }