师--链表的结点插入
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
给出一个只有头指针的链表和 n 次操作,每次操作为在链表的第 m 个元素后面插入一个新元素x。若m 大于链表的元素总数则将x放在链表的最后。
Input
多组输入。每组数据首先输入一个整数n(n∈[1,100]),代表有n次操作。
接下来的n行,每行有两个整数Mi(Mi∈[0,10000]),Xi。
Output
对于每组数据。从前到后输出链表的所有元素,两个元素之间用空格隔开。
Sample Input
4 1 1 1 2 0 3 100 4
Sample Output
3 1 2 4
Hint
Source
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data ;
struct node *next ;
}NODE;
int main()
{
int n ;
int m , x;
int i ,j;
int t ;
NODE *head , *p , *q ;
while(~scanf("%d",&n))
{
head = (NODE*)malloc(sizeof(NODE)) ;
head -> next = NULL ;
for(i=0;i<n;i++)
{
p = head ;
scanf("%d %d",&m,&x) ;
q = (NODE*)malloc(sizeof(NODE)) ;
q -> next = NULL ;
q -> data = x;
t = i ;
if(m>=t)
{
while(p->next)
p = p->next ;
p->next = q ;
}
else
{
for(j=0;j<m;j++)
{
p = p->next ;
}
q->next = p->next ;
p -> next = q ;
}
}
p = head -> next ;
while(p)
{
printf("%d",p->data) ;
if(p->next == NULL )
printf("\n") ;
else printf(" ") ;
p = p->next ;
}
}
return 0 ;
}
/***************************************************
User name:
Result: Accepted
Take time: 0ms
Take Memory: 180KB
Submit time: 2019-02-27 20:44:34
****************************************************/