您的位置:首页 > 其它

九度OJ 题目1181:遍历链表

2016-01-09 12:06 309 查看

题目1181:遍历链表

题目描述:

建立一个升序链表并遍历输出。

输入:

输入的每个案例中第一行包括1个整数:n(1<=n<=1000),接下来的一行包括n个整数。

输出:

可能有多组测试数据,对于每组数据,

将n个整数建立升序链表,之后遍历链表并输出。

样例输入:

4

3 5 7 9

样例输出:

3 5 7 9

来源:

2000年华中科技大学计算机研究生机试真题

/*********************************
*   日期:2016-1-9
*   作者:Pt
*   题号: 九度OJ 题目1181:遍历链表
*   来源:http://ac.jobdu.com/problem.php?pid=1181
*   结果:AC
*   来源:2000年华中科技大学计算机研究生机试真题
*   总结: 1.可能有多组测试数据!!!  2.思路要清晰 3.* 与 &
**********************************/

#include<stdio.h>
#include<stdlib.h>

typedef struct LNode
{
int data;
struct LNode * next;//struct
}LNode;

typedef LNode* LinkList;

LinkList InitL(void);
void UpAdd(LinkList L, int t);
void printL(LinkList L);

int main()
{
LinkList link_list;
int n, i, t;
while(scanf("%d", &n)==1) //可能有多组测试数据!!!
{
link_list = InitL();
for(i = 0; i < n; i ++)
{
scanf("%d", &t);
UpAdd(link_list, t);
}
printL(link_list);
}
return 0;
}

LinkList InitL(void)
{
LinkList link_list;
link_list = (LinkList)malloc(sizeof(LNode));
link_list-> next = NULL;
return link_list;
}

void UpAdd(LinkList L, int t)
{
LinkList p = L;
LinkList q = (LinkList)malloc(sizeof(LNode));
q -> data = t;
q -> next = NULL;
while(p -> next != NULL && t > p-> next -> data)
p = p -> next; //寻找插入位置p,在p之后插入
if(p -> next == NULL)
p -> next = q;
else
{
q -> next = p -> next;
p -> next = q;
}
}

void printL(LinkList L)
{
LinkList p = L->next;
while(p != NULL)
{
if(p->next == NULL)
printf("%d\n", p -> data);
else
printf("%d ", p->data);
p = p -> next;
}
}


我的血泪史



不说了,吃饭去,下午复习电路 〒_〒
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: