现在的位置: 首页 > 综合 > 正文

九度OJ 题目1181:遍历链表

2012年03月11日 ⁄ 综合 ⁄ 共 954字 ⁄ 字号 评论关闭
题目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;
}

抱歉!评论已关闭.