【PTA】7-2 单链表基本操作 (25 分)
请编写程序实现单链表插入、删除结点等基本算法。给定一个单链表和一系列插入、删除结点的操作序列,输出实施上述操作后的链表。单链表数据域值为整数。
输入格式:
输入第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;struct Node * next;
};
int main()
{int a,b,c,d,n,i=0,k=0,j;struct Node * head,*p,*q,*pr,*L,*L1,*L3;scanf("%d",&a);j=a;head=(struct Node *)malloc(sizeof(struct Node));head->next=NULL;q=head;while(a>0){p=(struct Node *)malloc(sizeof(struct Node));scanf("%d",&p->data);q->next=p;q=p;a--;}q->next=NULL;scanf("%d",&n);while(n>0){scanf("%d",&b);if(b==0){scanf("%d %d ",&c,&d);pr=(struct Node *)malloc(sizeof(struct Node));pr->data=d;L=head->next;if(c==0){k++;pr->next=head->next;head->next=pr;}if(c>0&&c<=j+k){while(L!=NULL){i++;if(i==c)break;L=L->next;}pr->next=L->next;L->next=pr;k++;i=0;}}if(b==1){scanf("%d",&c);L=head; L1=head;if(c>0&&c<=j+k){while(L!=NULL){i++;L=L->next;if(i==c)break;L1=L;}L1->next=L->next;i=0;j--;}}n--;}L3=head->next;while(L3!=NULL){printf("%d ",L3->data);L3=L3->next;}return 0;
}
【PTA】7-2 单链表基本操作 (25 分)相关推荐
- 7-1 单链表基本操作 (5 分)
请编写程序实现单链表插入.删除结点等基本算法.给定一个单链表和一系列插入.删除结点的操作序列,输出实施上述操作后的链表.单链表数据域值为整数. 输入格式: 输入第1行为1个正整数n,表示当前单链表长度 ...
- L2-002 链表去重 (25 分) 船新方法
L2-002 链表去重 (25 分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点须被保存在另一 ...
- 7-93 链表去重 (25 分)
7-93 链表去重 (25 分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点须被保存在另一个链 ...
- 6-4 单链表插入排序 (15分)
6-4 单链表插入排序 (15分) 单链表插入排序 ###目的: 掌握单链表的应用和插入排序的思想. ###内容: 编写一个函数insertion_sort,对一个无序单链表采用插入排序的方式,将其按 ...
- 【CCCC】L2-002 链表去重 (25分),,把一个链表拆成两个
problem L2-002 链表去重 (25分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点 ...
- 7-4 单链表基本操作
7-4 单链表基本操作 请编写程序实现单链表插入.删除结点等基本算法.给定一个单链表和一系列插入.删除结点的操作序列,输出实施上述操作后的链表.单链表数据域值为整数. 输入格式: 输入第1行为1个正整 ...
- 237删除链表中的节点(单链表基本操作)
1.题目描述 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 说明: 链表至少包含两个节点. 链表中所有节点的值都是唯一的. 给定的节点为非末尾节点并且一定 ...
- C语言单链表基本操作总结
C语言单链表基本操作 本文是参考他人实现的C语言单链表,对多篇博文整理的结果,仅作为学习笔记.文末有参考出处. 1.单链表定义 链表是通过一组任意的存储单元来存储线性表中的数据元素,这些存储单 ...
- 数据结构-单链表基本操作-C语言代码
单链表基本操作 1.头插法建立单链表 2.尾插法建立单链表 3.查找结点 3.修改结点 4.插入结点 5.删除结点 本篇只有c语言代码,具体思路讲解请看这篇博客:数据结构-线性结构-单链表 1.头插法 ...
最新文章
- array_filter php5.4 php5.5,PHP 5.4:我可以使用filter_var_array()将多个标志与过滤器一起使用吗?...
- (转)jQuery第五课:Ajax
- 计算机术语表达祝福,考研祝福| | 计算机 愿你们历经千帆,终达彼岸
- 爬取京东淘宝商品销量并可视化处理数据
- 深度理解Android InstantRun原理以及源码分析
- EXCEL两组数相等红色标示并放到第三列_VBA
- shocked的歌曲 类似shell_Shell Shocked
- jlist动态添加元素后刷新_小米电视5再曝光:MEMC动态画质补偿技术
- 语音技术――性别辨识和语者验证
- 用户奖励体系有哪些反作弊的机制?
- 离散数学及其应用第1章笔记总结
- mybatis查询出现索引越界异常
- 【TCAX+AVS+MeGui】这里讲讲过气tcax内置特效的制作流程吧
- 语音验证码接口(JSP)语言
- 手机上可以拍蓝底证件照吗
- erase和remove
- java山地自行车怎么看型号_自行车大小型号如何区分的
- vs2008配置opencv2.4.0
- Linux禁止普通用户使用某些命令
- CAD软件 CAD控件 CAD三维控件 CAD手机平板控件。
热门文章
- 天弘借余额宝变老大 华夏欲借微信翻盘
- idea springboot web项目创建并集成mybatis+springmvc(二)
- 解决docker中发布到docker-hub上The push refers to a repository的报错原因。
- blender拉丝纹理
- 彻底解决Tomcat8080端口被占用问题(方法2强力推荐)
- 实名网站认证申请条件
- 360推广一年需要多少钱,360推广一个月要多少钱
- CISA Cert Prep: 5 Information Asset Protection for IS Auditors CISA证书准备:5 IS审计员的信息资产保护 Lynda课程中文字幕
- SSD + HDD 双硬盘卡顿问题
- java 蛋糕_1263: 你会做蛋糕吗?(Java)