【数据结构回顾】
数据结构回顾
- 一、单链表
- 二、单循环链表
一、单链表

#include <stdio.h>
#include <stdlib.h>typedef struct Node {int data;Node *next;
}Node;Node* initList()
{Node *list = (Node*)malloc(sizeof(Node));list->data = 0;list->next = NULL;return list;
}void headInsert(Node* L, int data)
{Node *node = (Node*)malloc(sizeof(Node));node->data = data;node->next = L->next;L->next = node;L->data++;
}void tailInsert(Node* L, int data)
{Node *List = L;Node *node = (Node*)malloc(sizeof(Node));node->data = data;while (List->next){List = List->next;}node->next = List->next;List->next = node;L->data++;
}int delete_node(Node* L, int data)
{Node *pre = L;Node *current = L->next;while(current){if (current->data==data){pre->next = current->next;free(current);L->data--;return true;}else{pre = current;current = current->next;}}return false;
}void printList(Node* L)
{while (L->next){L = L->next;printf("node = %d\n", L->data);}
}int main()
{Node* L = initList();headInsert(L, 1);headInsert(L, 2);headInsert(L, 3);headInsert(L, 4);headInsert(L, 5);tailInsert(L, 6);tailInsert(L, 7);printList(L);if (delete_node(L, 3)) {printf("success delete\n");}else {printf("fail delete\n");}printList(L);system("pause");return 0;
}
二、单循环链表

#include <stdio.h>
#include <stdlib.h>typedef struct Node {int data;Node *next;
}Node;Node* initList()
{Node *L = (Node*)malloc(sizeof(Node));L->next = NULL;L->data = 0;L->next = L;return L;
}void headInsert(Node* L, int data)
{Node *node = (Node*)malloc(sizeof(Node));node->data = data;node->next = L->next;L->next = node;L->data++;
}void tailInsert(Node* L, int data)
{Node *List = L;Node *node = (Node*)malloc(sizeof(Node));while (List->next!=L){List = List->next;}node->data = data;node->next = L;List->next = node;L->data++;
}int delete_node(Node* L, int data)
{Node *pre = L;Node *current = L->next;while (current!=L){if (current->data == data){pre->next=current->next;free(current);L->data--;return true;}else{pre = current;current = current->next;} }return false;
}void printList(Node* L)
{Node *node = L->next;while (node !=L){printf("%d->", node->data);node=node->next;}printf("NULL\n");
}
int main()
{Node* L = initList();headInsert(L, 1);headInsert(L, 2);headInsert(L, 3);headInsert(L, 4);headInsert(L, 5);tailInsert(L, 6);tailInsert(L, 7);printList(L);delete_node(L, 4);delete_node(L, 7);printList(L);system("pause");return 0;
}
相关文章:
【数据结构回顾】
数据结构回顾 一、单链表二、单循环链表 一、单链表 #include <stdio.h> #include <stdlib.h>typedef struct Node {int data;Node *next; }Node;Node* initList() {Node *list (Node*)malloc(sizeof(Node));list->data 0;list->next NULL;return list; }…...
QT创建可移动点类
效果如图所示: 创建新类MovablePoint,继承自QWidget. MovablePoint头文件: #ifndef MOVABLEPOINT_H #define MOVABLEPOINT_H#include <QWidget> #include <QPainter> #include <QPaintEvent> #include <QStyleOption> #includ…...
Flutter启动页
效果图 import dart:async; import package:flutter/cupertino.dart; import package:flutter/material.dart; import jumpPage.dart;class TransitPage extends StatefulWidget {const TransitPage({super.key});overrideState<TransitPage> createState() > _Trans…...
读word模板批量生成制式文件
文章目录 1、Maven依赖2、.docx或.doc格式的word模板准备3、读word模板,批量替换代码域,生成文件,demo4、结果展示 1、Maven依赖 <dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagre…...
Node.js crypto模块 加密算法
背景 微信小程序调用飞蛾热敏纸打印机,需要进行参数sig签名校验,使用的是sha1进行加密 // 通过crypto.createHash()函数,创建一个hash实例,但是需要调用md5,sha1,sha256,sha512算法来实现实例的…...
Win11 避坑安装WSL2 Ubuntu22.04
开始之前以管理员身份打开 PowerShell 启用适用于 Linux 的 Windows 子系统 需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。 PowerShell然后输入以下命令: dism.exe /online /enable-feature /featur…...
ESP8266+继电器+MQTT+VUE 实现远程开关灯
超详细教程 – ESP8266继电器MQTTVUE 实现远程开关灯 超详细教程 – ESP8266继电器MQTTVUE 实现远程开关灯 接线图 NC(通常闭合)与COM(公共)、NO(通常开放)与COM 是继电器引脚的不同配置,用于不…...
Android中级——四大组件工作过程
四大组件工作过程 ActivityServicestartService()过程bindService()过程 BroadcastReceiver注册过程发送和接收过程 ContentProvider Activity startActivity()最终都会调用到startActivityForResult() public void startActivityForResult(RequiresPermission Intent intent…...
【RabbitMQ】RabbitMQ 服务无法启动。系统出错。发生系统错误 1067。进程意外终止。
问题描述 RabbitMQ 服务无法启动。 rabbitmq-service.bat startRabbitMQ 服务正在启动 . RabbitMQ 服务无法启动。系统出错。发生系统错误 1067。进程意外终止。原因分析 RabbitMQ和Erlang版本不匹配。 解决方案 查询并安装RabbitMQ版本对应Erlang版本 https://www.rabbitm…...
如何理解attention中的Q、K、V?
y直接用torch实现一个SelfAttention来说一说: 1、首先定义三哥线性变换,query,key以及value: class BertSelfAttention(nn.Module):self.query nn.Linear(config.hidden_size, self.all_head_size)#输入768,输出768…...
Redis----取代RabbitMq 和 Kafka的解决方案
背景 已知rabbitmq和kafka作为消息中间件来给程序之间增加异步消息传递功能,这两个中间件都是专业的,功能也很强,但是有的时候过于复杂,对于只有一组消费者的消息队列,使用Redis 就可以轻松搞定。 异步消息队列 读者…...
动态规划之连续乘积最大子数组 连续和最大子数组
一. 连续和最大子数组 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,…...
keil在点击debug无法运行(全速运行)
1、今天发现我之前可以debug的程序,在板子上无法debug了,打断点完全没用 2、换了电脑,带板子过去也这样,之前可以运行的代码都debug不了 3、按照网上的方法,都不行,全速运行,单步执行都是灰色…...
go语言-协程
mOS结构体 每一种操作系统不同的线程信息 g给g0栈给g0协程内存中分配的地址,记录函数跳转信息, 单线程循环 0.x版本 1.0版本 多线程循环 操作系统并不知道Goroutine的存在 操作系统线程执行一个调度循环,顺序执行Goroutine 调度循环非常…...
如何伪造http头,让后端认为是本地访问
0x00 前言 这个知识点纯粹就是为了ctf准备的,很少有系统会出现这种情况。 0x01 正文 1.host头 如果后端从host取值来判断是否是本地就可以通过此方法进行绕过: host: 127.0.0.12.X-Forwarded-For X-Forwarded-For(XFF)是用来…...
视频剪辑音效处理软件有哪些?视频剪辑软件那个好用
音效是视频剪辑的重要部分,能起到画龙点睛的作用。在短视频平台中,一段出彩的音效能将原本平平无奇的视频变得生动有趣。那么,视频剪辑音效处理软件有哪些?本文会给大家介绍好用的音效处理软件,同时也会介绍视频剪辑音…...
搭建STM32F407的Freertos系统(基于STM32CubeMX)
本人长期开发Linux、Windows上应用软件,一直以来MCU开发有所接触,但较少(最近项目需要,小公司么,都得会,被逼的),好在有STM32CubeMX这样工具,貌似就是我想要的工具。 本次…...
vite 配置自动补全文件的后缀名
vite 不建议自动补全,文件的后缀名的 const Home ()>import("/views/Home.vue");文件是必须要加上 .vue 的后缀名的 如果 想要像 webpack 一样的不用写, 可以在vite.config.js中配置如下就可以了...
基于Spring Boot的人才公寓管理系统设计与实现(Java+spring boot+MySQL)
获取源码或者论文请私信博主 演示视频: 基于Spring Boot的人才公寓管理系统设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java spring…...
Python 编写函数
文章目录 条件语句循环语句自定义函数函数参数的传递类型函数的参数传入方法 lambda, map, filter, reduce 函数try-except 语句调试一些常用的内置函数 条件语句 编写程序时,经常用到一些条件或判断,需要用到 if 语句,它的字面意思是&#…...
Vue3实战:5分钟搞定全局WebSocket封装(含心跳检测与断线重连)
Vue3全局WebSocket封装实战:心跳检测与断线重连的最佳实践 WebSocket在现代Web应用中扮演着越来越重要的角色,特别是在需要实时数据更新的场景中。Vue3作为当前最流行的前端框架之一,与WebSocket的结合能够为开发者提供强大的实时交互能力。本…...
别再只盯着ONNX了!用PNNX把PyTorch模型轻松转成ncnn格式(安卓部署实战)
深度学习模型安卓部署实战:PNNX与ONNX转换工具深度对比 在移动端部署深度学习模型时,模型转换环节往往是开发者遇到的第一个技术瓶颈。许多团队习惯性地选择ONNX作为中间格式,却忽视了更高效的替代方案。本文将带您深入探索PNNX这一专为PyTor…...
工业质检项目从零开始:如何用‘主动学习’策略,把标注成本降低70%以上?
工业质检降本实战:用主动学习策略实现70%标注成本压缩 当某汽车零部件制造商首次将5000张未标注的焊接缺陷图片交到我们团队时,质检主管提出了两个灵魂拷问:"这批数据标注预算只有行业平均水平的30%,能不能做?&q…...
ngx_queue_sort
1 定义 ngx_queue_sort 函数 定义在 ./nginx-1.24.0/src/core/ngx_queue.cvoid ngx_queue_sort(ngx_queue_t *queue,ngx_int_t (*cmp)(const ngx_queue_t *, const ngx_queue_t *)) {ngx_queue_t *q, *prev, *next;q ngx_queue_head(queue);if (q ngx_queue_last(queue)) {r…...
MySQL视图与子查询的那些事儿:从报错1349看数据库设计的最佳实践
MySQL视图与子查询深度解析:从报错1349看高效数据库设计 在数据库开发与维护过程中,视图(View)和子查询(Subquery)是两种极为常用的技术手段。它们能够简化复杂查询、提高代码复用性,并为数据安全提供额外保障。然而,当这两种技术…...
救命!2026 转行网络安全值不值?薪资 + 工作 + 前景一篇讲透,不踩坑!
网络安全赛道 1、薪资情况 薪资影响因素 2、工作安排与内容 (1) 工作时间(2) 工作内容 3、网络安全前景展望4、如何提升竞争力5、职业技能总结6、学习资源分享 如果你计划在2025年转行到网络安全领域,以下是一些建议,可以帮助你顺利过渡并打下坚实的…...
别再手动录单了!手把手教你用U9C OpenAPI打通钉钉审批流(含完整配置流程)
别再手动录单了!手把手教你用U9C OpenAPI打通钉钉审批流(含完整配置流程) 当财务部的张经理第17次因为手工录入错误被审计部门退回单据时,他摔掉键盘的冲动都有了。这场景在很多企业司空见惯——U9C系统承载着核心业务数据&#…...
别再让蜂鸣器只会‘哔哔’叫了!用STM32F103的PWM和电容,DIY你的家电提示音库(附超级玛丽彩蛋)
用STM32F103打造专业级家电提示音库:从单调蜂鸣到沉浸式音效的进阶指南 1. 为什么传统蜂鸣器音效总让人皱眉? 每次听到微波炉完成加热时刺耳的"嘀——"声,或是洗衣机结束运转时机械的"哔哔"提示,总让人有种想…...
Go HTTP Server 性能分析与优化
Go HTTP Server 性能分析与优化 在当今高并发的互联网应用中,HTTP Server的性能直接决定了用户体验和系统稳定性。Go语言凭借其轻量级协程和高效的网络库,成为构建高性能HTTP服务的首选之一。即使使用Go,开发者仍需深入分析性能瓶颈并进行针…...
5分钟搞定AI超清画质增强:镜像部署与使用全攻略
5分钟搞定AI超清画质增强:镜像部署与使用全攻略 1. 引言:为什么需要AI画质增强 1.1 低清图像的普遍困扰 我们每天都会遇到各种低质量图片:模糊的老照片、压缩过度的网络图片、分辨率不足的截图。传统放大方法就像简单拉伸橡皮筋࿰…...
