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

输入格式:

输入第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 分)相关推荐

  1. 7-1 单链表基本操作 (5 分)

    请编写程序实现单链表插入.删除结点等基本算法.给定一个单链表和一系列插入.删除结点的操作序列,输出实施上述操作后的链表.单链表数据域值为整数. 输入格式: 输入第1行为1个正整数n,表示当前单链表长度 ...

  2. L2-002 链表去重 (25 分) 船新方法

    L2-002 链表去重 (25 分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点须被保存在另一 ...

  3. 7-93 链表去重 (25 分)

    7-93 链表去重 (25 分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点须被保存在另一个链 ...

  4. 6-4 单链表插入排序 (15分)

    6-4 单链表插入排序 (15分) 单链表插入排序 ###目的: 掌握单链表的应用和插入排序的思想. ###内容: 编写一个函数insertion_sort,对一个无序单链表采用插入排序的方式,将其按 ...

  5. 【CCCC】L2-002 链表去重 (25分),,把一个链表拆成两个

    problem L2-002 链表去重 (25分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点 ...

  6. 7-4 单链表基本操作

    7-4 单链表基本操作 请编写程序实现单链表插入.删除结点等基本算法.给定一个单链表和一系列插入.删除结点的操作序列,输出实施上述操作后的链表.单链表数据域值为整数. 输入格式: 输入第1行为1个正整 ...

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

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

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

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

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

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

最新文章

  1. array_filter php5.4 php5.5,PHP 5.4:我可以使用filter_var_array()将多个标志与过滤器一起使用吗?...
  2. (转)jQuery第五课:Ajax
  3. 计算机术语表达祝福,考研祝福| | 计算机 愿你们历经千帆,终达彼岸
  4. 爬取京东淘宝商品销量并可视化处理数据
  5. 深度理解Android InstantRun原理以及源码分析
  6. EXCEL两组数相等红色标示并放到第三列_VBA
  7. shocked的歌曲 类似shell_Shell Shocked
  8. jlist动态添加元素后刷新_小米电视5再曝光:MEMC动态画质补偿技术
  9. 语音技术――性别辨识和语者验证
  10. 用户奖励体系有哪些反作弊的机制?
  11. 离散数学及其应用第1章笔记总结
  12. mybatis查询出现索引越界异常
  13. 【TCAX+AVS+MeGui】这里讲讲过气tcax内置特效的制作流程吧
  14. 语音验证码接口(JSP)语言
  15. 手机上可以拍蓝底证件照吗
  16. erase和remove
  17. java山地自行车怎么看型号_自行车大小型号如何区分的
  18. vs2008配置opencv2.4.0
  19. Linux禁止普通用户使用某些命令
  20. CAD软件 CAD控件 CAD三维控件 CAD手机平板控件。

热门文章

  1. 天弘借余额宝变老大 华夏欲借微信翻盘
  2. idea springboot web项目创建并集成mybatis+springmvc(二)
  3. 解决docker中发布到docker-hub上The push refers to a repository的报错原因。
  4. blender拉丝纹理
  5. 彻底解决Tomcat8080端口被占用问题(方法2强力推荐)
  6. 实名网站认证申请条件
  7. 360推广一年需要多少钱,360推广一个月要多少钱
  8. CISA Cert Prep: 5 Information Asset Protection for IS Auditors CISA证书准备:5 IS审计员的信息资产保护 Lynda课程中文字幕
  9. SSD + HDD 双硬盘卡顿问题
  10. java 蛋糕_1263: 你会做蛋糕吗?(Java)