7-3 sdut-C语言实验-链表的结点插入
分数 20
全屏浏览
切换布局
作者 马新娟
单位 山东理工大学
给出一个只有头指针的链表和 n 次操作,每次操作为在链表的第 m 个元素后面插入一个新元素x。若m 大于链表的元素总数则将x放在链表的最后。
输入格式:
多组输入。每组数据首先输入一个整数n(n∈[1,100]),代表有n次操作。
接下来的n行,每行有两个整数Mi(Mi∈[0,10000]),Xi。
输出格式:
对于每组数据。从前到后输出链表的所有元素,两个元素之间用空格隔开。
输入样例:
4
1 1
1 2
0 3
100 4
输出样例:
3 1 2 4
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct chain
{
int data;
struct chain *next;
};
int main()
{
int n, num, sum, count;
while(~scanf("%d", &n))
{
struct chain *p, *q, *head;
head = (struct chain *)malloc(sizeof(struct chain));
head->next = NULL;
sum = 0;
while(n--)
{
count = 0;
q = head;
p = (struct chain *)malloc(sizeof(struct chain));
scanf("%d%d", &num, &p->data);
if(num <= sum)
{
while(count <= num)
{
if(count == num)
{
p->next = q->next;
q->next = p;
break;
}
q = q->next;
count++;
}
}
else
{
while(q->next)
q = q->next;
q->next = p;
q = p;
q->next = NULL;
}
sum++;
}
q = head->next;
while(q)
{
printf("%d", q->data);
if(q->next)
printf(" ");
else
printf("\n");
q = q->next;
}
}
return 0;
}