师--链表的结点插入
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#include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; }; int main() { int n,i,j,num = 0,m; struct node *head,*p,*tail,*q; while(scanf("%d",&n) != EOF){ num = 0; head = (struct node *)malloc(sizeof(struct node)); head->next = NULL; tail = head; for(i = 0;i < n;i++) { scanf("%d",&m); p = (struct node *)malloc(sizeof(struct node)); scanf("%d",&p->data); if(num <= m) { q = head; for(j = 0;j < num;j++) { q=q->next; } p->next=q->next; q->next = p; } else { q = head; for(j = 0;j < m;j++) { q=q->next; } p->next=q->next; q->next = p; } num++; } p = head->next; printf("%d",p->data); for(;p->next!=NULL;p=p->next) { printf(" %d",p->next->data); } printf("\n"); free(head); } return 0; }