7-4 单链表基本操作

请编写程序实现单链表插入、删除结点等基本算法。给定一个单链表和一系列插入、删除结点的操作序列,输出实施上述操作后的链表。单链表数据域值为整数。

输入格式:

输入第1行为1个正整数n,表示当前单链表长度;第2行为n个空格间隔的整数,为该链表n个元素的数据域值。第3行为1个正整数m,表示对该链表施加的操作数量;接下来m行,每行表示一个操作,为2个或3个整数,格式为0 k d或1 k。0 k d表示在链表第k个结点后插入一个数据域值为d的结点,若k=0则表示表头插入。1 k表示删除链表中第k个结点,此时k不能为0。注:操作序列中若含有不合法的操作(如在长度为5的链表中删除第8个结点、删除第0个结点等),则忽略该操作。n和m不超过100000。

输出格式:

输出为一行整数,表示实施上述m个操作后的链表,每个整数后一个空格。输入数据保证结果链表不空。

输入样例:

5
1 2 3 4 5
5
0 2 8
0 9 6
0 0 7
1 0
1 6

输出样例:

7 1 2 8 3 5 
#include<stdio.h>
#include<stdlib.h>
struct node {int data;node*next;
};
int main()
{int n,m, k, a, b;scanf("%d", &n);node* head, * pre, * p;head = new node;head->next = NULL;pre = head;for(int i=0;i<n;i++){p = new node;scanf("%d", &p->data);p->next = NULL;pre->next = p;pre = p;}scanf("%d", &m);for(int i=0;i<m;i++){scanf("%d", &k);if (k == 0){scanf("%d%d", &a, &b);if (a == 0) {node* l;l = new node;l->data = b;l->next = head->next;head->next = l; n++;}else if(a<=n){node* pre= head,*p;for (int j = 0; j < a;j++)pre = pre->next;p = new node;p->data = b;p->next = pre->next;pre->next = p; n++;}}if (k == 1) {scanf("%d", &a);if (a != 0 && a <= n){node* pre;pre = head;for(int k=1;k<a;k++)pre = pre->next;pre->next = pre->next->next;}}}node* l = head; l = l->next;while (l != NULL){printf("%d ", l->data);l = l->next;}return 0;
}

基本操作,画画图变一下指针的指向就行,插入就是让新节点的指针先指向它的下一个节点,在让他的上一个节点指向它即可。删除可以往后移一下指针。

7-4 单链表基本操作相关推荐

  1. 237删除链表中的节点(单链表基本操作)

    1.题目描述 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 说明: 链表至少包含两个节点. 链表中所有节点的值都是唯一的. 给定的节点为非末尾节点并且一定 ...

  2. C语言单链表基本操作总结

    C语言单链表基本操作     本文是参考他人实现的C语言单链表,对多篇博文整理的结果,仅作为学习笔记.文末有参考出处. 1.单链表定义 链表是通过一组任意的存储单元来存储线性表中的数据元素,这些存储单 ...

  3. 数据结构-单链表基本操作-C语言代码

    单链表基本操作 1.头插法建立单链表 2.尾插法建立单链表 3.查找结点 3.修改结点 4.插入结点 5.删除结点 本篇只有c语言代码,具体思路讲解请看这篇博客:数据结构-线性结构-单链表 1.头插法 ...

  4. 【数据结构|链表】单链表基本操作

    文章目录 一.链表 二.链表分类 三.单链表基本操作   3.1 单链表存储结构Init   3.2 遍历链表visitlist函数   3.3 求表长length   3.4 查找listfind ...

  5. 单链表基本操作的实现

    单链表基本操作的实现 [PS]: 由于笔者的能力水平有限,如果遇到相关错误或者存在歧义的地方,欢迎在下方评论区留言联系笔者,如果你觉得这篇文章对你有帮助,那么不妨动动你的小手点赞收藏转发,让更多的人看 ...

  6. 【数据结构-C】单链表基本操作及图解分析

    目录 单链表介绍​ 单链表基本操作及图解分析 1.创建一个新结点 2.头插法向单链表中插入结点​ 3. 尾插法向单链表中插入结点​ 4.头删法删除单链表结点​ 5.尾删法删除单链表结点​ 6.返回单链 ...

  7. C 语言单链表基本操作

    复习下数据结构,使用 C 语言实现了带头节点的单链表.单链表基本操作有:节点初始化.链表初始化.插入节点.查找节点.删除节点和删除链表等.下面的程序中,list.h 为头文件, 其中包含了上述基本操作 ...

  8. C语言实现单链表基本操作

    C语言实现单链表基本操作的 目录

  9. 图解链表 —— JAVA中的单链表基本操作

    文章目录 1. 什么是链表 2. 链表的种类 3. 创建单链表 3.1 创建 Node 类(车厢类) 3.2 创建 MySingleList (火车类) 4. 单链表的基本操作 4.1 增加链表元素 ...

最新文章

  1. 数据结构之跳表Skiplist
  2. 通俗易懂:贪心算法(三):习题练习 (力扣605种花问题、122买卖股票的最佳时机)
  3. VTK:不透明度用法实战
  4. React Native 模仿网易云音乐手机客户端,兼容安卓和IOS两个平台
  5. Chrome浏览器手动添加Cookie的方法
  6. ThinkPHP3.1快速入门(3)查询语言
  7. 下滑加载更多js_专治:卫生间免砸砖,房顶漏水,JS堵漏王水不漏,厂家三包产品,免费成熟配方(点开看更多)...
  8. gulp插件gulp-ruby-sass和livereload插件
  9. linux服务器上网页变形,Linux服务器上用iScanner删除网页恶意代码的方法
  10. 7 libjpeg使用
  11. mysql 5.7 升级 8.0_MySQL5.7升级到8.0过程详解
  12. 让.net 2.0支持并行计算
  13. 怎么把苹果手机通讯录导入华为手机_苹果手机资料快速导入华为手机。苹果的ios系统也可以把资料导入安卓!...
  14. 【bzoj1668/Usaco2006 Oct】Cow Pie Treasures 馅饼里的财富——dp
  15. SCJP 认证考试指南
  16. mysql中的alter_MySQL中Alter用法
  17. 【Redis-6.0.8】Redis中的RAX
  18. EOF 键盘输入end of file
  19. aid learning安装应用_aid learning安装python
  20. 获取服务器端的webapps路径

热门文章

  1. GDPR条例的12项重点分析
  2. 3D建模行业前景分析
  3. 访客模式 无痕模式 区别_访客设计模式示例
  4. 【Microsoft Azure 的1024种玩法】二十六. 在Azure VM中手动部署Windows Admin Center管理平台
  5. 基本数据类型的隐式转换
  6. WKWebView使用及注意点(keng)
  7. orcad capture学习笔记---3.DRC规则设置及检查
  8. windows 提示缺少VCRUNTIME140.dll错误
  9. 【webGoat】Broken Access Control
  10. 怎么用计算机编写文件,怎样在电脑上写作文做文件