数据结构--单链表操作
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…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
ThreadLocal 源码
ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物,因为每个访问一个线程局部变量的线程(通过其 get 或 set 方法)都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段,这些类希望将…...
