数据结构--单链表操作
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…...
从MATLAB验证到FPGA上板:双频信号叠加的完整开发闭环实战
从MATLAB验证到FPGA上板:双频信号叠加的完整开发闭环实战 在数字信号处理领域,实现双频信号的精确叠加是一个常见但极具挑战性的任务。无论是通信系统中的载波调制,还是音频处理中的音效合成,都需要工程师能够准确地在硬件层面实现…...
MagiskHide Props Config:设备属性管理的3大维度与安全检测绕过全指南
MagiskHide Props Config:设备属性管理的3大维度与安全检测绕过全指南 【免费下载链接】MagiskHidePropsConf This tool is now dead... 项目地址: https://gitcode.com/gh_mirrors/ma/MagiskHidePropsConf 一、价值定位:为什么每个root用户都需要…...
FireRedASR Pro在微信小程序开发中的应用:实时语音输入与转写
FireRedASR Pro在微信小程序开发中的应用:实时语音输入与转写 不知道你有没有这样的经历:用手机打字回复长消息时,手指按得发酸;或者在线听课时,想快速记下老师的重点,手速却跟不上语速。在移动优先的今天…...
终极揭秘:4步掌握Unity视觉还原技术核心
终极揭秘:4步掌握Unity视觉还原技术核心 【免费下载链接】UniversalUnityDemosaics A collection of universal demosaic BepInEx plugins for games made in Unity3D engine 项目地址: https://gitcode.com/gh_mirrors/un/UniversalUnityDemosaics Universa…...
基于 SpringBoot 的自助图书借阅管理系统源码讲解
以下是一个基于 SpringBoot 的自助图书借阅管理系统的 核心源码讲解,涵盖用户管理、图书管理、借阅管理、设备对接等关键模块,代码结构清晰,可直接用于学习或二次开发。一、项目结构src/main/java/com/library/ ├── config/ # 配…...
深度探索:开源工具OpenCore Legacy Patcher技术揭秘与完整指南
深度探索:开源工具OpenCore Legacy Patcher技术揭秘与完整指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果系统持续演进,…...
为什么小数据集上神经网络会突然‘开窍‘?揭秘Grokking现象背后的LU机制
为什么小数据集上神经网络会突然"开窍"?揭秘Grokking现象背后的LU机制 在机器学习实践中,我们常常观察到一种反直觉的现象:当神经网络在小规模算法数据集上训练时,测试准确率会在长时间停滞于随机猜测水平后突然跃升至接…...
FairyGUI在CocosCreator中的高级应用:异步加载、事件处理与性能优化技巧
FairyGUI在CocosCreator中的高阶实战:异步架构设计与性能调优全指南 当你的CocosCreator项目UI复杂度达到临界点时,传统的资源加载和事件处理方式往往会成为性能瓶颈。FairyGUI作为专业UI解决方案,其深度集成能力可以彻底改变这种局面——但真…...
视频会议不止办公!揭秘它如何重构医疗与教育两大行业
在数字技术全面普及的今天,视频会议早已不再局限于企业内部日常办公沟通这一单一用途,开始深度渗透到各大垂直行业领域中。其中医疗、教育这两大与民生息息相关的领域,更是借助定制化开发的视频会议技术,解决了不少长期存在的行业…...
MogFace人脸检测模型-large应用指南:从图片上传到结果分析,手把手教学
MogFace人脸检测模型-large应用指南:从图片上传到结果分析,手把手教学 1. 认识MogFace-large:为什么选择这个人脸检测模型 在开始实际操作之前,我们先简单了解下MogFace-large的核心优势。这个模型已经在Wider Face六项榜单上霸榜…...
