师--链表的结点插入
Problem Description
给出一个只有头指针的链表和 n 次操作,每次操作为在链表的第 m 个元素后面插入一个新元素x。若m 大于链表的元素总数则将x放在链表的最后。
Input
多组输入。每组数据首先输入一个整数n(n∈[1,100]),代表有n次操作。
接下来的n行,每行有两个整数Mi(Mi∈[0,10000]),Xi。
Output
对于每组数据。从前到后输出链表的所有元素,两个元素之间用空格隔开。
Example Input
4 1 1 1 2 0 3 100 4
Example Output
3 1 2 4
#include <stdio.h>
#include <stdlib.h>
struct sdut
{
int data;
struct sdut *next;
};
int main()
{
int n, a, t, count, i;
while(scanf("%d", &n) != EOF)
{
struct sdut *head, *p, *q;
head = (struct sdut*)malloc(sizeof(struct sdut));
head -> next = NULL;
t = 0;
for(i = 0; i < n; i++)
{
count = 0;
q = head;
p = (struct sdut*) malloc(sizeof(struct sdut));
scanf("%d%d", &a, &p -> data);
if(a <= t)
{
while(count <= a)
{
if(count == a)
{
p -> next = q -> next;
q -> next = p;
break;
}
q = q -> next;
count ++;
}
}
else
{
while(q -> next)
{
q = q -> next;
}
q -> next = p;
p -> next = NULL;
}
t++;
}
p = head -> next;
while(p)
{
if(p -> next)
printf("%d ", p -> data);
else
printf("%d\n", p -> data);
p = p -> next;
}
}
return 0;
}