チェーンテーブルのチェーンテーブルの接点挿入

4043 ワード

マスター-チェーンテーブルのノード挿入
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description
ヘッダポインタのみのチェーンテーブルとn回の操作が与えられ、各操作がチェーンテーブルのm番目の要素の後ろに新しい要素xを挿入する.mがチェーンテーブルの要素の総数より大きい場合、xはチェーンテーブルの最後に配置される.
Input
複数組の入力.各グループのデータは、まずn回の操作を表す整数n(n∈[1100])を入力する.
次のn行は,各行に2つの整数Mi(Mi∈[00000]),Xiがある.
Output
各グループのデータについて.チェーンテーブルのすべての要素を前から後に出力し、2つの要素の間をスペースで区切ります.
Sample Input
4 1 1 1 2 0 3 100 4
Sample Output
3 1 2 4
Hint
#include 
#include 
struct node
{
    int data;
    struct node*next;
};
struct node*head;
int len;
void insert(int m,int x);
void print();
int main()
{
    int n,i,m,x;
    while(~scanf("%d",&n))
    {   len=0;
    head=(struct node*)malloc(sizeof(struct node));
    head->next=NULL;
        for(i=0;i"%d %d",&m,&x);
            insert(m,x);
        }
        print();
    }
    return 0;
}
void insert(int m,int x)
{
    struct node*p,*q;
    int i;
    p=head;
    for(i=0;i<m&&inext;
    }//     ,     p   , p     q
    q=(struct node*)malloc(sizeof(struct node));
    q->next=NULL;
    q->data=x;
    q->next=p->next;
    p->next=q;
    len++;
}
void print()
{
    struct node*p;
    p=head->next;
    while(p)
    {
        if(p==head->next)
        {
            printf("%d",p->data);
        }
        else
        {
            printf(" %d",p->data);
        }
        p=p->next;
    }printf("
"
); }