师--链表的结点插入
2017-03-05 18:21
302 查看
师--链表的结点插入
[align=center]Time Limit: 1000MSMemory Limit: 65536KB[/align][align=center][/align]
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* Creat(int m, int x,struct node *head) { struct node *p = (struct node *)malloc(sizeof(struct node)); p->data = x; p->next = NULL; struct node *q = head->next; struct node *tail = head; while(m-- && q) { q = q->next; tail = tail->next; } if(m) { tail->next = p; p->next = q; } else { tail ->next = p; p->next = NULL; } return head; } void Show(struct node *head) { struct node *p; p=head->next; while(p) { if(p->next) printf("%d ",p->data); else printf("%d\n",p->data); p=p->next; } } 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 = Creat(m,x,head); } Show(head); } return 0; }
相关文章推荐
- 链表之链表的结点插入
- C语言实现链表之单向链表(五)头结点前插入结点
- java实现创建链表以及插入节点,查找结点,删除节点等操作
- 双链表的建立、求长、定位、插入、删除、输出和释放(带头结点且成环状)
- 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数将其返回。 ⑤ 建立两个
- 《C语言及程序设计》教学视频 <18 链表中结点的插入和删除> 示例代码
- C语言实现双向非循环链表(带头结点尾结点)的节点插入
- 有序链表插入新结点的改进
- 链表——结点的插入
- 从键盘读入n个整数(升序),请编写算法实现: 建立带表头结点的单链表; 显示单链表,(形如:H->10->20->30->40); 在有序单链表中插入新的数据元素x; 将单链表就地逆
- 关于链表的新建,删除结点,插入结点的代码
- 插入排序的链表,无头结点
- 双向循环链表的建立,插入,删除(不带头结点)
- 师--链表的结点插入
- C语言实现链表之单向链表(七)尾结点后插入结点
- 不带头结点,头部插入法创建链表
- 师——链表的结点插入
- 单链表之插入删除结点
- 链表的结点插入
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表