7-3 sdut-C语言实验-链表的结点插入
分数 20
全屏浏览
切换布局
作者 马新娟
单位 山东理工大学
给出一个只有头指针的链表和 n 次操作,每次操作为在链表的第 m 个元素后面插入一个新元素x。若m 大于链表的元素总数则将x放在链表的最后。
输入格式:
多组输入。每组数据首先输入一个整数n(n∈[1,100]),代表有n次操作。
接下来的n行,每行有两个整数Mi(Mi∈[0,10000]),Xi。
输出格式:
对于每组数据。从前到后输出链表的所有元素,两个元素之间用空格隔开。
输入样例:
4 1 1 1 2 0 3 100 4
输出样例:
3 1 2 4
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h> #include<string.h> #include<stdlib.h> struct chain { int data; struct chain *next; }; int main() { int n, num, sum, count; while(~scanf("%d", &n)) { struct chain *p, *q, *head; head = (struct chain *)malloc(sizeof(struct chain)); head->next = NULL; sum = 0; while(n--) { count = 0; q = head; p = (struct chain *)malloc(sizeof(struct chain)); scanf("%d%d", &num, &p->data); if(num <= sum) { while(count <= num) { if(count == num) { p->next = q->next; q->next = p; break; } q = q->next; count++; } } else { while(q->next) q = q->next; q->next = p; q = p; q->next = NULL; } sum++; } q = head->next; while(q) { printf("%d", q->data); if(q->next) printf(" "); else printf("\n"); q = q->next; } } return 0; }