数据结构--单链表操作
1.单链表的创建(带头结点)
#include<stdlib.h>
#define ElemType int
typedef struct {//定义一个结点ElemType data;struct STU* next;
}STU,*LinkList;
bool InitList(LinkList& L) {L = (STU*)malloc(sizeof(STU));//创建头结点if (L == NULL) {//以防内存不足创建失败return false;}L->next = NULL;return true;
}
int main() {LinkList L;InitList(L);
}
2.单链表的创建(不带头结点)
#include <cstddef>//使用NULL需要的头文件
#define ElemType int
typedef struct {ElemType data;struct STU* next;
}STU,*LinkList;
bool InitList(LinkList& L) {L = NULL;//空表,没有结点return true;}
int main() {LinkList L;//声明一个指向单链表的指针InitList(L);//初始化一个空的单链表
}
3.单链表(带头结点)--按位序插入
#include<stdlib.h>
#define ElemType int
#include <cstddef>
typedef struct {//定义一个结点ElemType data;struct STU *next;
}STU, *LinkList;
bool InitList(LinkList& L) {L = (STU*)malloc(sizeof(STU));//创建头结点if (L == NULL) {//以防内存不足创建失败return false;}L->next = NULL;return true;
}
bool ListInsert(LinkList& L, int i, ElemType e) {if (i < 1) {return false;}STU *p;//定义一个指针让其指向当前扫描到的结点int j = 0;//表示p当前指向第几个结点p = L;//L指向头结点,头结点是第零个结点,不存数据while (p != NULL && j < i - 1) {//找到第i-1个结点p = p -> next;j++;}if (p == NULL) {return false;}STU* s = (STU*)malloc(sizeof(STU));//定义一个新结点放插入的元素s->data = e;s->next = p->next;//不要搞反这两行的顺序p->next = s;return true;
}
int main() {LinkList L;InitList(L);ListInsert(L, 2, 3);//在第二个位置插入数据3
}
4.单链表(不带头结点)--按位序插入
#include <cstddef>//使用NULL需要的头文件
#include "ConsoleApplication1.h"
#include <corecrt_malloc.h>
#define ElemType int
typedef struct {ElemType data;struct STU* next;
}STU,*LinkList;
bool InitList(LinkList& L) {L = NULL;//空表,没有结点return true;}
bool ListInsert(LinkList &L, int i, ElemType e) {if (i < 1) {return false;}if (i == 1) {//特殊情况STU* s = (STU*)malloc(sizeof(STU));s->data = e;s->next = L;L = s;return true;}STU* p;//定义一个指针让其指向当前扫描到的结点int j = 1;//表示p当前指向第几个结点p = L;//L指向头结点,头结点是第零个结点,不存数据while (p != NULL && j < i - 1) {//找到第i-1个结点p = p -> next;j++;}if (p == NULL) {return false;}STU* s = (STU*)malloc(sizeof(STU));//定义一个新结点放插入的元素s->data = e;s->next = p->next;//不要搞反这两行的顺序p->next = s;return true;}
int main() {LinkList L;//声明一个指向单链表的指针InitList(L);//初始化一个空的单链表ListInsert(L, 2, 3);
}
5.单链表--指定结点的后插操作(带头结点)
#include<stdlib.h>
#define ElemType int
typedef struct {//定义一个结点ElemType data;struct STU* next;
}STU,*LinkList;
bool InitList(LinkList& L) {L = (STU*)malloc(sizeof(STU));//创建头结点if (L == NULL) {//以防内存不足创建失败return false;}L->next = NULL;return true;
}
bool InsertNextNode(STU* p, ElemType e) {if (p == NULL) {return false;}STU* s = (STU*)malloc(sizeof(STU));s->data = e;s->next = p->next;p->next = s;return true;
}
int main() {LinkList L;InitList(L);STU *p;InsertNextNode(p, 3);
}
6.单链表--指定结点的前插操作(带头结点)
#include<stdlib.h>
#define ElemType int
typedef struct {//定义一个结点ElemType data;struct STU* next;
}STU,*LinkList;
bool InitList(LinkList& L) {L = (STU*)malloc(sizeof(STU));//创建头结点if (L == NULL) {//以防内存不足创建失败return false;}L->next = NULL;return true;
}
bool InsertPriorNode(STU* p, ElemType e) {//前插操作就是先后插,再调转两个数据的位置if (p == NULL) {return false;}STU* s = (STU*)malloc(sizeof(STU));s->next = p->next;p->next = s;s->data = p -> data;p->data = e;return true;
}
int main() {LinkList L;InitList(L);STU* p;InsertPriorNode(p, 3);
}
7.单链表--按位序删除(带头结点)
#include<stdlib.h>
#define ElemType int
typedef struct {//定义一个结点ElemType data;struct STU* next;
}STU,*LinkList;
bool InitList(LinkList& L) {L = (STU*)malloc(sizeof(STU));//创建头结点if (L == NULL) {//以防内存不足创建失败return false;}L->next = NULL;return true;
}
bool ListDelete(LinkList& L, int i, ElemType e) {if (i < 1) {return false;}STU* p;int j = 0;p = L;while (p != NULL && j < i - 1) {p = p->next;j++;}if (p == NULL||p->next==NULL) {return false;}STU* q = p->next;e = q->data;p->next = q->next;free(q);return true;
}
int main() {LinkList L;InitList(L);ElemType e;ListDelete(L, 2, e);
}
相关文章:
数据结构--单链表操作
1.单链表的创建(带头结点) #include<stdlib.h> #define ElemType int typedef struct {//定义一个结点ElemType data;struct STU* next; }STU,*LinkList; bool InitList(LinkList& L) {L (STU*)malloc(sizeof(STU));//创建头结点if (L NUL…...

AlmaLinux (兼容centos)安装Geant4与ROOT
AlmaLinux 介绍 AlmaLinux OS 是一个开源、社区驱动的 Linux 操作系统,它填补了因 CentOS 稳定版本停止维护而留下的空白,同时更加强大。 安装 AlmaLinux 这个我用的是 windows 子系统进行安装 首先打开微软商店,然后搜索AlmaLinux&#…...
FPGA面试题(2)
一.同步复位和异步复位 同步复位:当clk有效时,复位才有效。优点:有利于时序分析,防止毛刺现象出现。缺点:复位信号必须大于时钟周期,大部分逻辑器件中D触发器都只有异步复位端口,需要在寄存器数…...
【C++ Primer Plus学习记录】指针——使用new来创建动态数组
目录 1.使用new创建动态数组 2.使用动态数组(如何使用指针访问数组元素) 如果程序只需要一个值,则可能会声明一个简单变量,因为对于管理一个小型数据对象来说,这样做比使用new和指针更简单。通常,对于大型…...

移动app广告变现,对接广告联盟还是选择第三方聚合广告平台?
作为互联网广告的载体,APP天生就比线下传统广告位更具优势,不受地域限制可以辐射到地球上的每一个角落,可以让广告获得更广的覆盖面。通过丰富的广告形式,精准的目标用户画像,也可以更好地实现品牌广告或效果广告的投放…...

ARM 按键控制 LED灯,蜂鸣器,风扇
main.c: #include "uart.h" #include "key_it.h" int main() {all_led_init();uart4_init();//串口初始化//中断初始化key_it_config();key3_it_config();buzzer_init();fan_init();while(1){//保证主程序不结束}return 0; }src/key_it.c: #include"…...
VirtualBox Ubuntu扩展虚拟机磁盘空间
关于Orical VM VirtualBox虚拟机安装了ubuntu linux系统,由于需要,磁盘空间不足,需要扩展磁盘空间,最终找到了一个非常简单的方法,上干货。 1、关闭虚拟机 2、运用VBoxManage命令扩展vdi文件的空间 打开windows的命…...
C#开发的OpenRA游戏之电力系统之二
C#开发的OpenRA游戏之电力系统之二 继续前面的电力系统分析,在OpenRA游戏里,每一个建筑物都会有一个电力描述字段,说明这个建筑物是消耗电力,还是产生电力的。如果这个建筑物是产生电力的,那么这个字段就会是正值,如果这个建筑物是消耗电力的,就会是负值。因此所有电厂…...
Java架构师基础框架设计
目录 1 导学2 理解软件框架3 框架设计里面的框架和设计模式的关系4 基础框架中常见的基本功能4.1 事务处理4.2 微服务网络调用4.3 缓存实现4.4 分布式id4.5 任务调度4.6 工作流5 基础框架的几种基本的使用方式5.1 继承方式5.2 注解或注解加AOP的方式5.3 将基础框架的功能直接当…...

tortoise创建本地仓库
1.安装git和tortoise 推荐 TortoiseGit的安装与配置方法 以及 Git TortoiseGit 配置步骤以及本地版本管理 这里记录一下我遇到的问题 1.右键没有创建本地版本库 2 .创建了但是克隆不了 后续专有 一般选专有网络 注意自行谨慎选择 自行负责...

【FreeRTOS】【STM32】03 FreeRTOSConfig.h头文件简介与修改
基于[野火]《FreeRTOS%20内核实现与应用开发实战—基于STM32》.pdf FreeRTOSConfig.h头文件是FreeRTOS各项功能的打开与关闭 FreeRTOSConfig.h头文件简介 之前也说过了,FreeRTOSConfig.h文件可以添加在工程中任意文件夹,只需要在路径中添加好了就行。…...

VScode商店无法访问
下面的方法也许对你没用,也许也有用,但是尝试一下不会有任何副作用。 步骤一: 步骤二:在Proxy代理设置中复制输入 http://127.0.0.1:8080 步骤三:关闭软件,再打开VScode,把http://127.0.0.1:8…...

【UnityUGUI】复合控件详解,你还记得多少
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:UI_…...

ubuntu下使用gcc编译c程序: “error: stray ‘\357’ in program“
现象: ubuntu下使用gcc编译c程序: “error: stray ‘\357’ in program“ 尝试查找原因:打开从windos直接粘贴c程序到ubuntu的c代码,发现多了 <200b>: 方案:尝试在vim编辑器删除,多出来的字符后编译…...

LeetCode 143.重排链表
题目链接 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目解析 分析题目后我们可以直接进行模拟实现。 具体用到的就是我们之前的知识的结合,首先使用快慢指针找到链表的中间结点。然后将后半段链表给翻转一下,然后再让这…...

不做决策的“RPA机器人”,不是合格的“数字化劳动力”
01 RPA机器人向“数字劳动力”的转变 随着 RPA 技术被广泛应用各行业的不同场景中,再结合以深度学习为代表的 AI 人工智能技术的新一轮发展,RPA 机器人目前已经从仅能处理“单一、重复和标准化的流程”向智能流程自动化的方向发展,从而具备处…...
网页开发中使用highlight.js实现代码高亮 + 行号
一、背景# 笔者在开发这套博客系统时使用 Editormd 作为 Markdown 编辑器,由于不满足其代码高亮的样式,因此选用 highlight.js 插件来实现代码高亮功能。但是,highlight.js 插件不提供行号的设置功能,于是有了该文章。 二、实现…...

访问Apache Tomcat的manager页面
配置访问Tomcat manager页面的用户名、密码、角色 Tomcat安装完成后,包含了一个管理应用,默认安装在 <Tomcat安装目录>/webapps/manager 例如: 要使用管理页面的功能,需要在conf/tomcat-users.xml文件中配置用户、密码及…...
Ubuntu 20.04.6 LTS repo int 提示/usr/bin/env: “python“: 权限不够
这是由于ubuntu20.04默认安装的python3,将python命令配置i为了python3为软连接,此时只需要通过命令添加配置为python软连接即可 sudo ln -s /usr/bin/python3.8 /usr/bin/python 其中/usr/bin/python3.8这个需要看ubuntu下具体的文件,/usr/…...

python随手小练5
1、求1-100的累加和(终止条件 1-100)(while和for两种) #while循环 count 0 index 0 while index < 100:count indexindex 1 print(count)#for循环 sum 0 for i in range(0,101):sum i print(sum)结果: 5050 2…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...