师--链表的结点插入(单向链表)

师--链表的结点插入

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

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
****************************************************/

猜你喜欢

转载自blog.csdn.net/qq_43345339/article/details/88039546