删除单向链表中的某一个节点

2023-10-26

已知一个单向链表的表头head,写出一个删除某一个节点的算法,要求先找到此节点,然后删除。

#include<iostream>
using namespace std;
typedef struct node
{
	int number;
	struct node *next;
}Node;
Node *Delete(Node *head,int key)
{
	Node *node1=head;
	Node *node2=NULL;
	if (head==NULL)
	{
		return NULL;
	} 
	else
	{
		if (node1->number==key)
		{
			head=head->next;
			free(node1);
			return head;
		} 
		else
		{
			while (node1!=NULL)
			{
				node2=node1;
				node2=node2->next;
				if (node2->number==key)
				{
					node1->next=node2->next;
					free(node2);
					break;
				}
				node1=node1->next;
			}
			return head;
		}
	}
}
int main()
{
	Node *head=(Node*)malloc(sizeof(Node));
	Node *p,*q,*q1;
	int key;
	p=(Node*)malloc(sizeof(Node));
	q1=q=head;
	int i;
	for (i=1;i<10;i++)
	{
		p->number=i;
		head->next=p;
		head=p;
		p=(Node*)malloc(sizeof(Node));
	}
	head->next=NULL;
	cout<<"原链表数据: "<<endl;
	q1=q1->next;
	while (q1!=NULL)
	{
		cout<<q1->number<<" ";
		q1=q1->next;
	}
	cout<<endl;
	cout<<"输入要删除的数据:";
	cin>>key;
	p=Delete(q->next,key);
	cout<<"删除一个"<<key<<"之后的链表数据: "<<endl;
	while (p!=NULL)
	{
		cout<<p->number<<" ";
		p=p->next;
	}
	cout<<endl;
	free(p);
	free(head);
	return 0;
}


运行结果:

原链表数据:
1 2 3 4 5 6 7 8 9
输入要删除的数据:6
删除一个6之后的链表数据:
1 2 3 4 5 7 8 9

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除单向链表中的某一个节点 的相关文章

随机推荐

  • matlab读取csv有字符有数字,MATLAB读取csv文件里面既有文本又有数字的文件怎么读取。(可以不止csv文件,txt等文件都可以)...

    MATLAB读取csv文件里面既有文本又有数字的文件怎么读取 一 第一种方法用代码读取 用代码读取 1 如果你要读的文件里面都是数字的话 用csvread函数 它有三种方式读取 但是它的缺点就是只能读取全是数值的文件 简单来说 只能读数字
  • 智能小车红绿灯识别功能的实现(python,ubuntu)

    From sztu 自动化专业的小菜鸡 1 基本介绍 交通标志识别代码存在于 config teleop src smartcar scripts文件目录下的camera cmd py中 核心程序为light detection函数 lig
  • JavaScript实现简单区块链

    用JavaScript来实现一个简单的区块链 通过实现过程 你将理解区块链是什么 区块链就是一个分布式数据库 存储结构是一个不断增长的链表 链表中包含着许多有序的记录 然而 在通常情况下 当我们谈到区块链的时候也会谈起使用区块链来解决的问题
  • Implement Trie (Prefix Tree)前缀树系列

    208 Implement Trie Prefix Tree class Trie def init self Initialize your data structure here self tree def insert self wo
  • [HDLBits] Dualedge

    You re familiar with flip flops that are triggered on the positive edge of the clock or negative edge of the clock A dua
  • 时间函数——setDate()

    实例 设置一个月的某一天 var d new Date d setDate 15 d 输出结果 Sun Sep 15 2019 11 06 10 GMT 0800 中国标准时间 定义和用法 setDate 方法用于设置一个月的某一天 浏览器
  • [1055]VM上配置Centos7网络&设置静态IP&修改hostname

    文章目录 配置ceotos7网络 设置静态IP 修改hostname 配置ceotos7网络 首先在安装好centos7的时候会在本机电脑的网络管理里面出现以下网络 开机登录时候直接ping www baidu com 会发现ping不同
  • 一个很骚的sql报错:分页查询,每次返回数据可能不同

    追加 不是主要问题 应该是排序字段缺少唯一值 后面加了rowid 生效了 主表 bdg budget project 辅表 bdg budget 关系 一对一关系 问题 相同sql 分页查询 多次点击 返回的数据可能不同 原因 排序字段是辅
  • "防止同时出现多个应用程序实例"之改进

    防止同时出现多个应用程序实例 之改进字号 大 中 小 在 Delphi 5 开发人员指南 中第13章中有一篇 防止同时出现多个应用程序实例 代码中给出了一个MultInst pas单元 工程引用此单元就能防止同时出现多个实例 但实际应用中发
  • 铨顺宏RFID:错综复杂的地下管道用RFID标签能完成管理吗?

    RFID技术性使地底管网系统软件可以开展国际化的信息管理方法 提升管路的布署 日常保护和运作管理能力 现阶段地底管网资源优化配置方式已基本上不可以融入日益增加的管网业务流程要求 在较大水平上阻碍了城市的发展趋势 利用RFID方式方法对城市地
  • 探索地块建立

    探索地块建立 public static void main String args int num 0 Scanner sc new Scanner System in String s sc nextLine split int n I
  • Java获取当前时间前几个月、季度

    项目统计需要展示折线图 要求横轴 当前日期的前4个季度 前12个月 至于包含 不包含本月 自己处理一下日期就好 获取数组 import java time LocalDate import java util ArrayList impor
  • JavaScript数组方法整理

    JavaScript数组方法整理 1 join join 就是把数组转换成字符串 然后给他规定个连接字符 默认的是逗号 var arr 1 2 3 console log arr join 1 2 3 console log arr joi
  • 浅谈数据分析和数据挖掘

    1 数据分析 数据分析是指用适当的统计分析方法对收集来的大量数据进行分析 提取有用信息和形成结论而对数据加以详细研究和概括总结的过程 数据分析有极其广泛的应用范围 典型的数据分析过程可看做 四部曲 第一 数据获取 获取数据的前提是对商业问题
  • “老外写中国”的四大流派

    中国大趋势 当中国统治世界 关系 老北京最后的日子 工厂女孩 中国行 在英文的书架中 寻找主题为 中国 的图书 会冒出很多这样的封面设计 大红色的背景 鲜红色五角星占据主要位置 同样鲜红的书名中 CHINA 这个词的字体总是放得最大 这里介
  • AcWing 853. 有边数限制的最短路

    给定一个 n 个点 m 条边的有向图 图中可能存在重边和自环 边权可能为负数 请你求出从 1 号点到 n 号点的最多经过 k 条边的最短距离 如果无法从 1 号点走到 n 号点 输出 impossible 注意 图中可能 存在负权回路 输入
  • 如何安装maatwebsite/excel?

    背景 项目要下载内容 那最好是用扩展了 常用的也就是maatwebsite excel 但是今天安装的提示异常 错误如下 Problem 1 maatwebsite excel 3 1 28 3 1 30 require phpoffice
  • Python爬虫深造篇(一)——多线程网页爬取

    一 前情提要 相信来看这篇深造爬虫文章的同学 大部分已经对爬虫有不错的了解了 也在之前已经写过不少爬虫了 但我猜爬取的数据量都较小 因此没有过多的关注爬虫的爬取效率 这里我想问问当我们要爬取的数据量为几十万甚至上百万时 我们会不会需要要等几
  • 《Centos系统——linux运维必备基础命令》

    目录 1 vi编译器的3种基本模式 命令模式 末行模式 插入模式 2 vim的高级模式 可视化模式 vim多行注释 3 线上查询及帮助命令 2 个 man 帮助 help 命令用于显示shell内部命令的帮助信息 4 文件和目录操作命令 1
  • 删除单向链表中的某一个节点

    已知一个单向链表的表头head 写出一个删除某一个节点的算法 要求先找到此节点 然后删除 include