王道p40 1.设计一个递归算法,递归删除单链表L中所有值为x的结点(c语言)

news2024/12/23 11:01:31

视频讲解在这里:👇

p40 第1题 王道数据结构课后代码题c语言代码实现_哔哩哔哩_bilibili 

本题代码如下

void delete(linklist* L,int x)//递归删除x
{
	if((*L)->next!= NULL)
	{
		if ((*L)->next->data == x)//找到x
		{
			lnode* p = (*L)->next;
			(*L)->next = p->next;
			free(p);
			delete(&(*L), x);
		}
		else
		{
			delete(&(*L)->next, x);
		}
	}
}

完整测试代码

#include<stdio.h>
#include<stdlib.h>
typedef struct lnode
{
	int data;
	struct lnode* next;
}lnode,*linklist;
int n = 4;
int a[4] = { 1,2,2,4 };
void buildlinklist(linklist* L)//建立单链表
{
	*L = (lnode*)malloc(sizeof(lnode));
	(*L)->next = NULL;
	int i = 0;
	lnode* s = *L, * r = *L;
	for (i = 0; i < n; i++)//头插法建立单链表
	{
		s = (lnode*)malloc(sizeof(lnode));
		s->data = a[i];
		s->next = r->next;
		r->next = s;
		r = s;
	}
	r->next = NULL;
}
void delete(linklist* L,int x)//递归删除x
{
	if((*L)->next!= NULL)
	{
		if ((*L)->next->data == x)//找到x
		{
			lnode* p = (*L)->next;
			(*L)->next = p->next;
			free(p);
			delete(&(*L), x);
		}
		else
		{
			delete(&(*L)->next, x);
		}
	}
}
void print(linklist* L)//输出单链表
{
	lnode* p = (*L)->next;
	while (p)
	{
		printf("%d ", p->data);
		p = p->next;
	}
	printf("\n");
}
int main()
{
	linklist L;
	buildlinklist(&L);
	printf("原始链表为:");
	print(&L);
	delete(&L, 2);
	printf("删除后的链表为:");
	print(&L);
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1186044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【第2章 Node.js基础】2.2 Node.js回调函数

学习目标 &#xff08;1&#xff09;理解Node.js的回调函数&#xff1b; &#xff08;2&#xff09;掌握回调函数的使用。 什么是回调函数 回调函数是一种特殊的函数&#xff0c;它作为参数传递给另一个函数&#xff0c;并在特定的事件或条件发生时被调用。回调函数通常用于异…

FreeRTOS学习笔记——SysTick中断

FreeRTOS学习笔记——SysTick中断_freertos tick中断-CSDN博客 FreeRTOS 之六 任务调度原理解析&#xff08;Systick、PendSV、SVC&#xff09;_freertos m0-CSDN博客 FreeRTOS中关于时间的管理分为两部分&#xff1a;一部分是任务的延时管理;前面叙述过一些&#xff0c;还有…

找不到d3dx9_43.dll怎么办?解决d3dx9_43.dll丢失的5个方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到d3dx9_43.dll”。这个错误通常出现在运行某些游戏或应用程序时&#xff0c;它是由于缺少DirectX组件中的d3dx9_43.dll文件所引起的。那么&#xff0c;当我们遇到这个问题时&#xff…

JWT 使用入门(三)请求流程

文章目录 1、前后端使用JWT详细步骤2、前后端使用JWT详情图3、从流程中看优点与缺点3.1 优点3.2 缺点 之前在第一篇中提到过其使用流程&#xff0c;以下讲的是第二种&#xff1a;https://blog.csdn.net/qq_37534947/article/details/132066909 但是JWT主要作用应该应用于以下&a…

Android sqlite 使用简介

进行Android应用开发时经常会用到数据库。Android系统支持sqlite数据库&#xff0c;在app开发过程中很容易通过SQLiteOpenHelper使用数据库&#xff0c;SQLiteOpenHelper依赖于Context对象&#xff0c;但是基于uiatomator1.0和Java程序等无法获取Context的应用如何使用数据库呢…

SAP实现文本框多行输入(类cl_gui_textedit)

先看效果&#xff0c;在输入框先来一段《赤壁赋》 然后点击 ‘保存输出’按钮&#xff0c;就能把输入内容从表里读取并输出来 源代码&#xff1a; *&---------------------------------------------------------------------* *& Report ZCYCLE060 *&---------…

如何避免JavaScript中的内存泄漏?

前言 过去&#xff0c;我们浏览静态网站时无须过多关注内存管理&#xff0c;因为加载新页面时&#xff0c;之前的页面信息会从内存中删除。 然而&#xff0c;随着单页Web应用&#xff08;SPA&#xff09;的兴起&#xff0c;应用程序消耗的内存越来越多&#xff0c;这不仅会降低…

13 套接字Socket

1、Socket 编程 socket编程基于 TCP 和 UDP 协议的tcp和udp是区分客户端和服务端的&#xff0c;所以我们的socket编程也是区分的。 2、socket是端到端的通信 1.Socket 这个名字很有意思&#xff0c;可以作插口或者插槽讲 2.一头插在客户端&#xff0c;一头插在服务端&#x…

阿里云双11优惠活动:2核2G3M云服务器1年99元,新老用户均可购买!

阿里云双11优惠活动正在火热进行中&#xff0c;阿里云推出了一款特价云服务器ECS&#xff0c;2核2G3M的配置1年仅需99元&#xff0c;新老用户均可购买&#xff0c;新购、续费同价&#xff01; 活动入口&#xff1a;传送门>>> 活动详情&#xff1a; 云服务器ECS&#…

Bitget Wallet:使用 Base 链购买 ETH 的简明教程

Base 链是一种 Layer 2&#xff08;L2&#xff09;公链&#xff0c;它可以为用户提供以太坊&#xff08;ETH&#xff09;代币&#xff0c;而 Bitget Wallet 是一款多功能加密货币钱包&#xff0c;支持 Base 链以及其他主要区块链。

三天打鱼两天晒网

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 前言 本系列为选择结构编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 二、题目分析 三、解题 程序运行代码 #include<stdio.h> int main(){int n;scanf("%d",&n);i…

MySQL进阶_1.逻辑架构和SQL执行流程

文章目录 第一节、逻辑架构剖析1.1、服务器处理客户端请求1.2、Connectors1.3、第1层&#xff1a;连接层1.4、第2层&#xff1a;服务层1.5、 第3层&#xff1a;引擎层1.6、 存储层1.7、小结 第二节、SQL执行流程2.1、查询缓存2.2、解析器2.3、优化器2.4、执行器 第三节、数据库…

MySQL的安装使用(入学篇)

目录 1 MySQL安装 1.1 安装epel源 1.2 安装MySQL Repository 1.3 安装MySQL官方yum源 1.4 安装服务端、客户端 1.5 启动MySQL服务 2 MySQL 使用 2.1 获取初始登录密码 2.2 登录MySQL数据库 2.3 修改密码 2.4 退出数据库 2.5 使用新密码登录数据库 2.6 重启数据库 2.7 创建数据…

美国出台新规对全球芯片业产生深远影响 | 百能云芯

2023年10月18日&#xff0c;美国宣布了一项新版半导体出口管制规则&#xff0c;旨在限制对中国等特定市场出口尖端人工智能&#xff08;AI&#xff09;芯片的企业。该法规于当月16日生效&#xff0c;引发了广泛的关注。据日本经济新闻报道&#xff0c;这一举措将显着提高中国发…

Docker安装Elasticsearch和Kibana

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Leetcode—2578.最小和分割【简单】

2023每日刷题&#xff08;二十三&#xff09; Leetcode—2578.最小和分割 实现代码 class Solution { public:int splitNum(int num) {vector<int> a;while(num) {a.push_back(num % 10);num / 10;}int n a.size();sort(a.begin(), a.begin() n);int num1 0;int num…

商业保险/补充医疗,打工人不可忽略的额外福利

关于看病如何花钱这回事&#xff0c;我之前的认知仅仅停留在可以使用医保报销的层次。 虽然工作这十年来公司一直有提供商业保险的福利&#xff0c;但是之前一直没有关注过它&#xff0c;直到去年偶然尝试了通过商业保险申请理赔&#xff0c;从而实现医保报销后的二次报销。在二…

node 第十六天 模板引擎handlebars

handlebars handlebars文档 Handlebars 是一种简单的 模板语言。 它使用模板和输入对象来生成 HTML 或其他文本格式。Handlebars 模板看起来像常规的文本&#xff0c;但是它带有嵌入式的 Handlebars 表达式 。 这里我们要注意模板引擎的定义 模板引擎是对一串字符串 结合数据 编…

Python GUI标准库tkinter实现与记事本相同菜单的文本编辑器(一)

介绍&#xff1a; Windows操作系统中自带了一款记事本应用程序&#xff0c;通常用于记录文字信息&#xff0c;具有简单文本编辑功能。Windows的记事本可以新建、打开、保存文件&#xff0c;有复制、粘贴、删除等功能&#xff0c;还可以设置字体类型、格式和查看日期时间等。 …

PWM定时器同步问题--STM32F系列高级定时器同步输出PWM

PWM定时器同步问题–STM32F系列高级定时器同步输出PWM 死区时间50ns&#xff0c;设置值为4&#xff1b; 双极性倍频调制波形&#xff1a;上管-上管-下管-下管