师--链表的结点插入(PS:纯C代码)

来源:互联网 发布:压力传感器的数据采集 编辑:程序博客网 时间:2024/05/16 04:33

师–链表的结点插入
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
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 <stdio.h>#include <stdlib.h>struct node{    int data;    struct node *next;};struct node* _add(int m, int x,struct node *head){    struct node *q = (struct node *)malloc(sizeof(struct node));    q->data = x;    q->next = NULL;    struct node *p = head->next;    struct node *pp = head;    while(m-- && p)    {        p = p->next;        pp = pp->next;    }    if(m)    {        pp->next = q;        q->next = p;    }    else    {        pp ->next = q;        q->next = NULL;    }    return head;}int main(){    int n;    int m, x;    while(scanf("%d",&n)!=EOF){        struct node *head = (struct node *)malloc(sizeof(struct node));        head->next = NULL;        while(n--)        {            scanf("%d%d",&m,&x);            head = _add(m,x,head);        }        head = head->next;        while(head){            printf("%d",head->data);            head = head->next;            if(head)                printf(" ");        }        printf("\n");    }    return 0;}
0 0
原创粉丝点击