题目1181:遍历链表
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:1071
解决:437
-
题目描述:
-
建立一个升序链表并遍历输出。
-
输入:
-
输入的每个案例中第一行包括1个整数:n(1<=n<=1000),接下来的一行包括n个整数。
-
输出:
-
可能有多组测试数据,对于每组数据,
将n个整数建立升序链表,之后遍历链表并输出。
-
样例输入:
-
4 3 5 7 9
-
样例输出:
-
3 5 7 9
-
来源:
- 2000年华中科技大学计算机研究生机试真题
-
/********************************* * 日期:2013-2-20 * 作者:SJF0115 * 题号: 九度OJ 题目1181:遍历链表 * 来源:http://ac.jobdu.com/problem.php?pid=1181 * 结果:AC * 来源:2000年华中科技大学计算机研究生机试真题 * 总结: **********************************/ #include<stdio.h> #include<malloc.h> typedef struct Node { int data; struct Node *next; }LinkList; int main() { int i,n,a; while(scanf("%d",&n) != EOF){ LinkList *head,*pre,*p,*newNode; head = (LinkList*)malloc(sizeof(LinkList)); head->next = NULL; //输入数据 for(i = 0;i < n;i++){ //创建节点 newNode = (LinkList*)malloc(sizeof(LinkList)); scanf("%d",&newNode->data); //升序排列 pre = head; p = head->next; //找到插入位置 while(p){ if(newNode->data < p->data){ break; } pre = p; p = p->next; } //插入新节点 newNode->next = p; pre->next = newNode; } //输出 p = head->next; printf("%d",p->data); while(p->next){ p = p->next; printf(" %d",p->data); } printf("\n"); } return 0; }