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

    xiaoxiao2021-03-25  155

    师–链表的结点插入 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; }
    转载请注明原文地址: https://ju.6miu.com/read-3537.html

    最新回复(0)