首页 > 其他分享 >单链表的删除和插入

单链表的删除和插入

时间:2024-09-11 12:49:10浏览次数:3  
标签:单链 删除 int 元素 插入 printf

问题描述

设计算法,实现单链表的删除和插入操作。

输入描述

输入共三行,

第一行输入由空格分隔的若干个整数(以9999结束),表示单链表的元素,9999不算单链表的元素,利用尾插法建立单链表;

第二行一个整数i,代表删除元素的位置,完成单链表的删除操作;

第三行有两个整数j和k,分别代表插入元素的位置和待插入的元素,完成单链表的插入操作。

输出描述

输出有3-5行,第一行输出建立的单链表中所有元素,元素之间用一个空格隔开;

第二行输出删除是否成功,即输出“删除成功!”或“删除失败!”,若删除成功,则在下一行输出删除元素后的单链表,若删除失败,则不输出;

下一行输出插入是否成功,即输出“插入成功!”或“插入失败!”,若插入成功,则在下一行输出插入元素后的单链表,若插入失败,则不输出。

样例输入
输入样例1:
1 2 3 4 5 6 7 8 9 9999
2
5 16

输入样例2:
1 2 3 4 5 6 7 8 9 9999
-2
15 16
样例输出
输出样例1:
建立的单链表为:1 2 3 4 5 6 7 8 9
删除成功!
删除元素后的单链表为:1 3 4 5 6 7 8 9
插入成功!
插入元素后的单链表为:1 3 4 5 16 6 7 8 9

输出样例2:
建立的单链表为:1 2 3 4 5 6 7 8 9
删除失败!
插入失败!
#include<stdio.h>
#define LISTSIZE 100
typedef int DataType;
typedef struct
{
	DataType data[LISTSIZE];
	int length;
}SeqList;
static void ListDelete(SeqList& L, int i)  //单链表的删除操作
{
	if (i<1 || i>L.length)  //检查删除位置是否合法
	{
		printf("删除失败!\n");
		return;
	}
	else
	{
		for (int k = i; k < L.length - 1; k++)
			L.data[k - 1] = L.data[k];
		L.length--;
		printf("删除成功!\n");
	}
	printf("删除元素后的单链表为:");
	for (int k = 0; k < L.length - 1; k++)
		printf("%d ", L.data[k]);
	printf("\n");
	return;
}
static void ListInsert(SeqList& L, int j, int k)  //单链表的插入操作
{
	if (j<1 || j>L.length)  //检查合法性
	{
		printf("插入失败!\n");
		return;
	}
	else
	{
		L.length++;  //单链表长度加一
		int a = j;  //标记插入位置
		//插入位置之后所有元素后移一位
		int b=L.length-1;
		while (b>j-1)  //前一个元素的值赋给后一个元素
		{
			L.data[b] = L.data[b - 1];
			b--;
		}
		L.data[a-1] = k;
		printf("插入成功!\n");
	}
	printf("插入元素后的单链表为:");
	for (int k = 0; k < L.length - 1; k++)
		printf("%d ", L.data[k]);
	return;
}
int main()
{
	SeqList L;
	int n = 0;  //计算元素个数
	do{
		scanf("%d", &L.data[n]);
		n++;   
	} while (L.data[n-1] != 9999);
	L.length = n;  //将元素个数赋值给单链表长度
	int i = 0;
	scanf("%d", &i);  //删除元素的位置
	int j = 0, k = 0;
	scanf("%d%d", &j, &k);  //插入元素的位置和待插入的元素
	printf("建立的单链表为:");
	for (int m = 0; m < L.length - 1; m++)  
		printf("%d ", L.data[m]);
	printf("\n");
	ListDelete(L, i);  //删除操作
	ListInsert(L, j, k);  //插入操作
	return 0;
}

 

标签:单链,删除,int,元素,插入,printf
From: https://blog.csdn.net/2301_78872692/article/details/142136977

相关文章

  • TFS2015版以上强制删除被占用文件及强制删除工作区
    TFS2015版以上强制删除被占用文件及强制删除工作区,包括强制撤销其他人的签出。TFS文件被占用,强制取消占用。由于各种原因(签出后工作区更改、人员离职调动等)需要删除其他成员占用的文件TeamFoundation2015强制解除签入签出锁定TFS(TeamFoundationserver)源代码管理器,如何......
  • 583. 两个字符串的删除操作(leetcode)
    https://leetcode.cn/problems/delete-operation-for-two-strings/solutions/两种做法,1.直接dp2.转换题意,思考成LCSclassSolution{publicintminDistance(Stringword1,Stringword2){//编辑距离的简化版//f[i][j]表示word1前i个字符中选择,wo......
  • c语言--力扣简单题目(删除排序链表中的重复元素)讲解
    题目如下:给定一个已排序的链表的头head,删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。示例1:输入:head=[1,1,2]输出:[1,2]示例2:输入:head=[1,1,2,3,3]输出:[1,2,3]提示:链表中节点数目在范围[0,300]内-100<=Node.val<=100题目数据保......
  • 【Python】排序算法及二叉树讲解(冒泡 选择 插入 二分查找 二叉树的广度优先和三种深
    排序算法​所谓排序,使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作​排序算法,就是如何使得记录按照要求排列的方法​排序算法在很多领域是非常重要​在大量数据的处理方面:一个优秀的算法可以节省大量的资源。​在各个领域中考虑到数据的......
  • redis 正则匹配符合条件的key 进行删除
    //根据名字的key,如果key数量超过100,就进行一次删除publicintclearRedis(@PathVariable("prefix")Stringprefix)throwsIOException{ScanOptionsoptions=ScanOptions.scanOptions().match(prefix+"*").count(1000).build();Cursorcursor=r......
  • linux删除0字节文件
    实现方式:find-typef-size0-execrm-rf{}\;[root@logstash~]#find-typef-size0-execls-l{}\;-rw-r--r--1rootroot0Jul1914:39./a.txt-rw-r--r--1rootroot0Jul1914:39./b.txt-rw-r--r--1rootroot0Jul1914:39./c.txt-rw-r--r--1......
  • # Seaborn热图修改画布大小|Seaborn热图修改横纵坐标大小|Seaborn删除注释|Seaborn删
    Seaborn热图修改画布大小|Seaborn热图修改横纵坐标大小|Seaborn删除注释|Seaborn删除调色板|Seaborn注释添加标注文字|Seaborn删除刻度线查看图片importmatplotlibaspltplt.show()修改画布大小#导入需要用到的相关包importseabornassnsimportpandasaspdim......
  • MySQL——视图(二)视图管理(7)删除视图
            当视图不再需要时,可以将其删除,删除视图时,只能删除视图的定义,不会删除数据。删除一个或多个视图可以使用DROPVIEW语句,删除视图的基本语法格式如下所示:DROPVIEWIIEEXISTS]view_name[,view_name1]...[RESTRICT|CASCADE]        在上述......
  • 在windows中命令删除文件及文件夹,避免删除文件慢,资源管理器卡死。
    在Windows命令提示符(CMD)中,del和rmdir是两个常用的命令,用于删除文件和目录。以下是对这两个命令的详细解释及其用法:del命令del命令用于删除一个或多个文件。它的基本语法如下:del[选项]<文件名>常用选项:/F:强制删除只读文件。/Q:安静模式,删除时不显示确认提示。/S:从......
  • 数据结构—单链表的基本操作
    目录1.单链表的初始化2.求表长操作3.按序号查找结点4.按值查找表结点5.插入结点操作6.删除结点操作7.头插法建立单链表8.尾插法建立单链表1.单链表的初始化 带头结点: boolInitList(LinkList&L){       //带头结点的单链表的初始化  L=(......