当前位置: 首页 > news >正文

王道p40 1.设计一个递归算法,删除不带头结点的单链表L中的所有值为x的结点(c语言代码实现)图解递归

视频讲解(献丑了):p40 第1题 王道数据结构课后代码题c语言代码实现_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1Xa4y1Q7ui/?spm_id_from=333.999.0.0

首先它是一个不带头结点的单链表

我们就得特殊处理

我们先让*L==NULL;

然后为s开辟一个新的存储空间,让他等于a[0]的值

下面我们看一下建立无头节点的单链表代码该如何实现

void buildlinklist(linklist* L)
{*L = NULL;lnode* s, * r = *L;int i = 0;if (*L == NULL){s = (lnode*)malloc(sizeof(lnode));s->data = a[0];s->next = NULL;*L = s;}r = *L;for (i = 1; i < n; i++){s = (lnode*)malloc(sizeof(lnode));s->data = a[i];r->next = s;r =s;}r->next = NULL;
}

递归的图解 

本题主要代码为

void delete(linklist* L,int x)
{lnode* p;if (*L== NULL) {return;}if((*L)->data == x) {p = *L;*L = (*L)->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 a[5] = { 1,3,3,4,5 };
int n = 5;
void buildlinklist(linklist* L)
{*L = NULL;lnode* s, * r = *L;int i = 0;if (*L == NULL){s = (lnode*)malloc(sizeof(lnode));s->data = a[0];s->next = NULL;*L = s;}r = *L;for (i = 1; i < n; i++){s = (lnode*)malloc(sizeof(lnode));s->data = a[i];r->next = s;r =s;}r->next = NULL;
}
void delete(linklist* L,int x)
{lnode* p;if (*L== NULL) {return;}if((*L)->data == x) {p = *L;*L = (*L)->next;free(p);delete(L, x);}else {delete(&(*L)->next, x);}
}
void print(linklist* L)
{lnode* k=*L;while (k){printf("%d ", k->data);k = k->next;}
}
int main()
{linklist L;buildlinklist(&L);delete(&L,3);print(&L);
}

http://www.lryc.cn/news/208013.html

相关文章:

  • 深入浅出排序算法之希尔排序
  • close excel by keyword 根据关键字关闭 excel 窗口 xlwings 方式实现
  • LIO-SAM算法解析
  • vscode 提升小程序开发效率的必备插件与工具
  • 第五章单元测试
  • 【JAVA基础】多线程与线程池
  • HCIA数据通信——交换机(Vlan间的通信与安全)
  • Linux shell编程学习笔记16:bash中的关联数组
  • 浏览器是怎么执行JS的?——消息队列与事件循环
  • IMU预积分的过程详解
  • TypeScript中的类型运算符
  • 【蓝桥杯选拔赛真题03】C++输出字母Y 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析
  • redis搭建集群-多实例快速搭建
  • 为什么进行压力测试? 有哪些方法?
  • Java开发者必备:支付宝沙箱环境支付远程调试指南
  • 基于STM32温湿度传感器采集报警系统设计
  • 檢測項目簡體字
  • 适用于嵌入式arm的ffmpeg编解码
  • nlp与知识图谱代码解读_词嵌入
  • HarmonyOS 音频通话开发指导
  • LeetCode讲解篇之面试题 01.08. 零矩阵
  • 安装python虚拟环境
  • 【App 抓包提示网络异常怎么破?】
  • 【开发篇】一、处理函数:定时器与定时服务
  • 重入漏洞EtherStore
  • 账号运营的底层逻辑---获客思维
  • Pinia中如何实现数据持久化操作
  • 【owt-server】RTC视频接收调用流程学习笔记1: Call::CreateVideoReceiveStream 前后
  • 淘宝商品链接获取淘宝商品评论数据(用 Python实现淘宝商品评论信息抓取)
  • 十九、类型信息(1)