7-4 单链表基本操作
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 单链表基本操作相关推荐
- 237删除链表中的节点(单链表基本操作)
1.题目描述 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 说明: 链表至少包含两个节点. 链表中所有节点的值都是唯一的. 给定的节点为非末尾节点并且一定 ...
- C语言单链表基本操作总结
C语言单链表基本操作 本文是参考他人实现的C语言单链表,对多篇博文整理的结果,仅作为学习笔记.文末有参考出处. 1.单链表定义 链表是通过一组任意的存储单元来存储线性表中的数据元素,这些存储单 ...
- 数据结构-单链表基本操作-C语言代码
单链表基本操作 1.头插法建立单链表 2.尾插法建立单链表 3.查找结点 3.修改结点 4.插入结点 5.删除结点 本篇只有c语言代码,具体思路讲解请看这篇博客:数据结构-线性结构-单链表 1.头插法 ...
- 【数据结构|链表】单链表基本操作
文章目录 一.链表 二.链表分类 三.单链表基本操作 3.1 单链表存储结构Init 3.2 遍历链表visitlist函数 3.3 求表长length 3.4 查找listfind ...
- 单链表基本操作的实现
单链表基本操作的实现 [PS]: 由于笔者的能力水平有限,如果遇到相关错误或者存在歧义的地方,欢迎在下方评论区留言联系笔者,如果你觉得这篇文章对你有帮助,那么不妨动动你的小手点赞收藏转发,让更多的人看 ...
- 【数据结构-C】单链表基本操作及图解分析
目录 单链表介绍 单链表基本操作及图解分析 1.创建一个新结点 2.头插法向单链表中插入结点 3. 尾插法向单链表中插入结点 4.头删法删除单链表结点 5.尾删法删除单链表结点 6.返回单链 ...
- C 语言单链表基本操作
复习下数据结构,使用 C 语言实现了带头节点的单链表.单链表基本操作有:节点初始化.链表初始化.插入节点.查找节点.删除节点和删除链表等.下面的程序中,list.h 为头文件, 其中包含了上述基本操作 ...
- C语言实现单链表基本操作
C语言实现单链表基本操作的 目录
- 图解链表 —— JAVA中的单链表基本操作
文章目录 1. 什么是链表 2. 链表的种类 3. 创建单链表 3.1 创建 Node 类(车厢类) 3.2 创建 MySingleList (火车类) 4. 单链表的基本操作 4.1 增加链表元素 ...
最新文章
- 数据结构之跳表Skiplist
- 通俗易懂:贪心算法(三):习题练习 (力扣605种花问题、122买卖股票的最佳时机)
- VTK:不透明度用法实战
- React Native 模仿网易云音乐手机客户端,兼容安卓和IOS两个平台
- Chrome浏览器手动添加Cookie的方法
- ThinkPHP3.1快速入门(3)查询语言
- 下滑加载更多js_专治:卫生间免砸砖,房顶漏水,JS堵漏王水不漏,厂家三包产品,免费成熟配方(点开看更多)...
- gulp插件gulp-ruby-sass和livereload插件
- linux服务器上网页变形,Linux服务器上用iScanner删除网页恶意代码的方法
- 7 libjpeg使用
- mysql 5.7 升级 8.0_MySQL5.7升级到8.0过程详解
- 让.net 2.0支持并行计算
- 怎么把苹果手机通讯录导入华为手机_苹果手机资料快速导入华为手机。苹果的ios系统也可以把资料导入安卓!...
- 【bzoj1668/Usaco2006 Oct】Cow Pie Treasures 馅饼里的财富——dp
- SCJP 认证考试指南
- mysql中的alter_MySQL中Alter用法
- 【Redis-6.0.8】Redis中的RAX
- EOF 键盘输入end of file
- aid learning安装应用_aid learning安装python
- 获取服务器端的webapps路径
热门文章
- GDPR条例的12项重点分析
- 3D建模行业前景分析
- 访客模式 无痕模式 区别_访客设计模式示例
- 【Microsoft Azure 的1024种玩法】二十六. 在Azure VM中手动部署Windows Admin Center管理平台
- 基本数据类型的隐式转换
- WKWebView使用及注意点(keng)
- orcad capture学习笔记---3.DRC规则设置及检查
- windows 提示缺少VCRUNTIME140.dll错误
- 【webGoat】Broken Access Control
- 怎么用计算机编写文件,怎样在电脑上写作文做文件