SDUGT OJ 师--链表的结点插入

师--链表的结点插入

2018年01月31日 17:16:40

阅读数:15

师--链表的结点插入

Time Limit: 1000MS Memory Limit: 65536KB

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

Hint

 
#include <iostream>
#include<stdio.h>
using namespace std;
struct st
{
    int data;
    struct st *next;
};
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int sum=1;
        int x;
        struct st *head,*tail,*p,*q;
        head=new st;
        head->next=NULL;
        p=new st;
        scanf("%d%d",&x,&p->data);
        p->next=head->next;
        head->next=p;
        tail=p;
        int i;
        for(i=1; i<n; i++)
        {
            scanf("%d",&x);
            if(x>=sum)
            {
                p=new st;
                cin>>p->data;
                p->next=NULL;
                tail->next=p;
                tail=p;
                sum++;
            }
            else
            {
                q=head;
                while(x--)
                {
                    q=q->next;
                }
                p=new st;
                cin>>p->data;
                p->next=NULL;
                p->next=q->next;
                q->next=p;
                sum++;

            }
        }
        p=head->next;
        while(p)
        {
            if(p->next==NULL)
                printf("%d\n",p->data);
            else printf("%d ",p->data);
            p=p->next;

        }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41374539/article/details/81294207