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;
};
struct node *create(int n)
{
    struct node *head,*p,*tail,*q;
    int i,x,len,j;
    head=(struct node*)malloc(sizeof(struct node));
    head->next=NULL;
    tail=head;
    len=0;
    for(i=0;i<n;i++)

{
        p=(struct node*)malloc(sizeof(struct node));
        scanf("%d %d",&x,&p->data);
        p->next=NULL;
        if(x>=len)
        {
            tail->next=p;
            tail=p;
            len++;
        }
        else if(x==0)
        {
            p->next=head->next;
            head->next=p;
            len++;
        }
        else if(x>0&&x<len)
        {
            q=head;
            for(j=0;j<x;j++)
            {
                q=q->next;
            }
            p->next=q->next;
            q->next=p;
            len++;
        }
    }
    return (head);
};
void print(struct node *h)
{
    struct node *p=h->next;
    while(p!=NULL)
    {
        if(p->next==NULL)
            printf("%d",p->data);
        else
            printf("%d ",p->data);
        p=p->next;
    }
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        struct node *p;
        p=create(n);
        print(p);
        printf("\n");
    }
    return 0;
}

师--链表的结点插入相关推荐

  1. C - 师--链表的结点插入

    Description 给出一个只有头指针的链表和 n 次操作,每次操作为在链表的第 m 个元素后面插入一个新元素x.若m 大于链表的元素总数则将x放在链表的最后. Input 多组输入.每组数据首先 ...

  2. 链表之链表的结点插入

    师–链表的结点插入 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 给出一个只有头指针 ...

  3. 建立一个按年龄排序的有序链表,每个结点包括学号、姓名、性别、年龄。建立一个新的结点,通过年龄将此结点插入到链表中去,使之仍然有序

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容12]建立一个按年龄排序的有序链表,每个结点包括学号.姓名 ...

  4. Linux内核链表交换节点,[笔记]Linux内核链表:结点的插入、删除以及链表的遍历...

    Linux内核链表:结点的插入.删除以及链表的遍历 1. Linux内核链表的核心思想是:在用户自定义的结构A中声明list_head类型的成员p,这样每个结构类型为A的变量a中,都拥有同样的成员p, ...

  5. 单链表的基本操作-插入结点、删除结点、新建链表、查找结点位置

    ** C语言新手小白的学习笔记-------------目前持续更新中 ** 本人90后电气工程及其自动化大学生,大二开始接触C语言,写过前端,Python,但是都不精通,通过许多认识后明白了自身的许 ...

  6. Java 链表结点插入

    PS:链表是一种数据结构,而数据结构就是一种存放数据的方式. 为什么需要链表? 我们知道,数组也可以存储数据,那么为什么还需要链表呢?接下来,我们来看看数组 和链表的区别: 1.数组就像身上编了号站成 ...

  7. 链表头结点的插入和删除

    看了不少博客,大都讲的比较详细到关于链表节点的删除和插入,但因为没找到相关的头结点插入和删除的博客,所以打算自己写一下方便大家查阅 下面是已经给出的链表的抽象数据结构:然后 然后下面是定义的插入结点的 ...

  8. 已知带头结点的动态单链表L中的结点是按整数值递增排列的,试写一算法将值x为的结点插入到表L中,使L仍然有序。

    创建链表,main函数中通过while循环找出该插入的位置,插入.应注意L头节点位置的变化,利用一个ptr来记录L的头节点. /*已知带头结点的动态单链表L中的结点是按整数值递增排列的,试写一算法将值 ...

  9. 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点

    /*实验2 1. 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点 (low和high的值是多少可自由设计).并且要在程序中验证其功能实现. (可在实验1的第3题的基 ...

最新文章

  1. “偷懒”上热搜!南京大三学生自制宿舍关灯神器火了,网友:希望量产
  2. Vector的使用方法和自我理解
  3. 多agv系统调度的MATLAB仿真
  4. java提高篇(十二)-----代码块
  5. 如何用笔记本建立wifi热点
  6. gradle镜像配置:使用阿里云仓库服务的代理仓库地址代替jcenter()、mavenCentral()及google()
  7. 【线上分享】移动音视频SDK工程实践之数据采集和处理
  8. 设计模式---5(建造者模式的概念及其实现,建造者模式的角色与职责,建造者模式和工厂模式的区别)
  9. 水塔清洗机器人_最全的中央空调清洗流程
  10. How To Install IonCube Loader
  11. 【Http】Apache HttpClient 4.5实现https
  12. 如何将多个excel表格合并成一个_如何将一个视频分割成多个片段
  13. selenium 定位方式5
  14. mock介绍及moco框架搭建使用
  15. Java基础总结--1
  16. atitit.词法分析原理 词法分析器 (Lexer)
  17. 华为去年AI研发投入15亿美元,人才年薪平均30万美元
  18. 01. Perl 简介
  19. 【技术贴】ppt2003更换图片|更换带有动作特效的图片|替换ppt图片
  20. android系统(148)---android 8.1关机闹钟

热门文章

  1. shell判定一个变量等于-n_Shell test命令:条件判断,检查某条件是否成立
  2. 红黑树和平衡二叉树的区别_一文搞懂红黑树
  3. full outer join 与full join的区别_sleep、yield、join都是干啥的? sleep与wait有啥区别?中篇[十五]...
  4. js和python哪个好_Python与Node.JS:哪一个比较适合您的项目?
  5. python 局域网主机扫描_python扫描局域网主机名
  6. easyexcel导出百万级数据_百万级别数据Excel导出优化
  7. 典型相关分析_2020-2025年中国海水淡化行业发展前景与投资预测分析报告
  8. 【LeetCode笔记】347. 前K个高频元素(Java、优先队列、小顶堆、HashMap)
  9. 宝塔linux忘记密码,宝塔忘记登录入口了怎么解决 宝塔面板密码忘记了怎么办
  10. linux lvm lv扩充--虚拟机,虚拟机新增磁盘后lvm下的lv扩容