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

数据结构--单链表操作

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.单链表的创建&#xff08;带头结点&#xff09; #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 操作系统&#xff0c;它填补了因 CentOS 稳定版本停止维护而留下的空白&#xff0c;同时更加强大。 安装 AlmaLinux 这个我用的是 windows 子系统进行安装 首先打开微软商店&#xff0c;然后搜索AlmaLinux&#…...

FPGA面试题(2)

一.同步复位和异步复位 同步复位&#xff1a;当clk有效时&#xff0c;复位才有效。优点&#xff1a;有利于时序分析&#xff0c;防止毛刺现象出现。缺点&#xff1a;复位信号必须大于时钟周期&#xff0c;大部分逻辑器件中D触发器都只有异步复位端口&#xff0c;需要在寄存器数…...

【C++ Primer Plus学习记录】指针——使用new来创建动态数组

目录 1.使用new创建动态数组 2.使用动态数组&#xff08;如何使用指针访问数组元素&#xff09; 如果程序只需要一个值&#xff0c;则可能会声明一个简单变量&#xff0c;因为对于管理一个小型数据对象来说&#xff0c;这样做比使用new和指针更简单。通常&#xff0c;对于大型…...

移动app广告变现,对接广告联盟还是选择第三方聚合广告平台?

作为互联网广告的载体&#xff0c;APP天生就比线下传统广告位更具优势&#xff0c;不受地域限制可以辐射到地球上的每一个角落&#xff0c;可以让广告获得更广的覆盖面。通过丰富的广告形式&#xff0c;精准的目标用户画像&#xff0c;也可以更好地实现品牌广告或效果广告的投放…...

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系统&#xff0c;由于需要&#xff0c;磁盘空间不足&#xff0c;需要扩展磁盘空间&#xff0c;最终找到了一个非常简单的方法&#xff0c;上干货。 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头文件简介 之前也说过了&#xff0c;FreeRTOSConfig.h文件可以添加在工程中任意文件夹&#xff0c;只需要在路径中添加好了就行。…...

VScode商店无法访问

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

【UnityUGUI】复合控件详解,你还记得多少

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;UI_…...

ubuntu下使用gcc编译c程序: “error: stray ‘\357’ in program“

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

LeetCode 143.重排链表

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

不做决策的“RPA机器人”,不是合格的“数字化劳动力”

01 RPA机器人向“数字劳动力”的转变 随着 RPA 技术被广泛应用各行业的不同场景中&#xff0c;再结合以深度学习为代表的 AI 人工智能技术的新一轮发展&#xff0c;RPA 机器人目前已经从仅能处理“单一、重复和标准化的流程”向智能流程自动化的方向发展&#xff0c;从而具备处…...

网页开发中使用highlight.js实现代码高亮 + 行号

一、背景# 笔者在开发这套博客系统时使用 Editormd 作为 Markdown 编辑器&#xff0c;由于不满足其代码高亮的样式&#xff0c;因此选用 highlight.js 插件来实现代码高亮功能。但是&#xff0c;highlight.js 插件不提供行号的设置功能&#xff0c;于是有了该文章。 二、实现…...

访问Apache Tomcat的manager页面

配置访问Tomcat manager页面的用户名、密码、角色 Tomcat安装完成后&#xff0c;包含了一个管理应用&#xff0c;默认安装在 <Tomcat安装目录>/webapps/manager 例如&#xff1a; 要使用管理页面的功能&#xff0c;需要在conf/tomcat-users.xml文件中配置用户、密码及…...

Ubuntu 20.04.6 LTS repo int 提示/usr/bin/env: “python“: 权限不够

这是由于ubuntu20.04默认安装的python3&#xff0c;将python命令配置i为了python3为软连接&#xff0c;此时只需要通过命令添加配置为python软连接即可 sudo ln -s /usr/bin/python3.8 /usr/bin/python 其中/usr/bin/python3.8这个需要看ubuntu下具体的文件&#xff0c;/usr/…...

python随手小练5

1、求1-100的累加和&#xff08;终止条件 1-100&#xff09;&#xff08;while和for两种&#xff09; #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)结果&#xff1a; 5050 2…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...