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

c语言-链表1

10 链表

一、链表是什么?

                --  数据的一种存储方式         -- 链式存储

(1)线性存储         -- 地址连续         -- 自动开辟,自动释放         -- 默认是线性存储

(2)链式存储         -- 地址不连续         -- 手动开辟,手动释放

二、链式存储所使用的常用函数

1、malloc

函数功能:开辟内存空间

函数头文件:#include<stdlib.h>

函数原型:void *malloc(size_t size);

函数参数:size -- 要开辟的空间大小

函数返回值:void *         -- 开辟的空间的地址         -- 任意类型    -- 方便强转成你需要的类型

注:因为返回值是任意类型,所以一定不要忘记强转!!!

2、perror

函数功能:打印某个函数的执行结果(错误信息)

函数头文件:#include<stdio.h>

函数原型:void perror(const char *s);

函数参数:

                s -- 字符串,函数名

        //因为参数是个字符串类型,所以函数名作为参数时,要用""引起来

函数返回值:无

3、memset

函数功能:初始化内存空间

函数头文件:#include<string.h>

函数原型:void *memset(void *s,int c,size_t n);

函数参数:
        s         -- 要初始化的空间地址
        c         -- 初始化的内容 -- 一般初始化为0
        n         -- 要初始化的空间大小

函数返回值:不用

4、bzero

函数功能:初始化内存空间为0

函数头文件:#include<strings.h>

函数原型:void bzero(void *s,size_t n);

函数参数:
        s         -- 要初始化的空间地址
        n         -- 要初始化的空间大小

函数返回值:无

4、free

函数功能:释放内存空间 --地址依然存在,但是不能够使用

函数头文件:#include<stdlib.h>

函数原型:void free(void *ptr);

函数参数:
                ptr -- 要释放的空间地址

函数返回值:无

三、链表的存储形式

alt text

1、链表是由多个节点组成的

alt text

2、节点的组成:

(1)保存数据                 -- 数据域

(2)保存下一个节点的地址                 -- 指针域

alt text

地址:默认都是首地址

alt text

四、链表操作

        tip: 在vscode中,按住ctrl的同时点击鼠标,就会产生超链接,进到其函数定义处或者是.h文件里。

                ctrl+F,有查询和替换的功能

1、创建节点

alt text

#include "create.h"struct node *create()
{struct node *p = (struct node *)malloc(sizeof(struct node));  //要强转if(p == NULL){perror("malloc");   //参数是字符串,所以函数名要用""引起来return NULL;}memset(&p->pnext,0,sizeof(p->data));//将数据初始化为0,因为不能把指针初始化为0,所以指针和数据分开初始化p->pnext = NULL;printf("创建成功!\n");return p;
} 

2、新增链表

alt text

#include "add.h"struct node *ADD(struct node *phead)
{struct node *pnew = create();printf("请输入你想增加的数据:\n");scanf("%d",&pnew->data);struct node *ptemp = phead;while(ptemp->pnext != NULL){ptemp = ptemp->pnext;}ptemp->pnext = pnew;printf("添加成功!\n");
}

3、删除链表、修改、查询

alt text

(1)删除

        注:这里要ptemp代表的是要删除数据的上一个节点,如果ptemp是要删除的节点的话,则找不到上一个节点的数据。因为是单链表。

#include "del.h"void DEL(struct node *phead)
{if(phead->pnext == NULL){printf("链表为空!\n");return;}int n;printf("请输入你想删除的数据:\n");scanf("%d",&n);struct node *ptemp = phead;while(ptemp->pnext !=NULL){if(ptemp->pnext->data == n){struct node *pdel = ptemp->pnext;ptemp->pnext = ptemp->pnext->pnext;free(pdel);printf("删除成功!\n");return;}ptemp = ptemp->pnext;}printf("查无数据!\n");
}

(2)修改

#include "update.h"void UPDATE(struct node *phead)
{if(phead->pnext == NULL){printf("链表为空!\n");return;}int n;printf("请输入你想更新的数据:\n");scanf("%d",&n);struct node *ptemp = phead;while(ptemp->pnext !=NULL){if(ptemp->pnext->data == n){printf("请输入您要修改的新数据:\n");scanf("%d",&ptemp->pnext->data);printf("更新成功!\n");return;}ptemp = ptemp->pnext;}printf("查无数据!\n");
}

(3)查询

#include "find.h"void FIND(struct node *phead)
{if(phead->pnext == NULL){printf("链表为空!\n");return;}int n;printf("请输入你想查询的数据:\n");scanf("%d",&n);struct node *ptemp = phead;while(ptemp->pnext !=NULL){if(ptemp->pnext->data == n){printf("%d\n",ptemp->pnext->data);printf("查询成功!\n");return;}ptemp = ptemp->pnext;}printf("查无数据!\n");
}

4、遍历链表

alt text

         注:ptemp这里是第一个有效节点,因为phead头节点没有数据域,所以不是有效节点

#include "query.h"void QUERY(struct node *phead)
{if(phead->pnext == NULL){printf("链表为空!\n");return;}struct node *ptemp = phead->pnext;printf("链表存放的数据为:\n");while(ptemp!=NULL){printf("%d\n",ptemp->data);ptemp = ptemp->pnext;}
}

 5、节点排序

五、循环链表

 

六、双向链表

 

相关文章:

c语言-链表1

10 链表 一、链表是什么&#xff1f; -- 数据的一种存储方式 -- 链式存储 &#xff08;1&#xff09;线性存储 -- 地址连续 -- 自动开辟&#xff0c;自动释放 -- 默认是线性存储 &#xff08;2&#xff09;链式存储 -- 地址不连续…...

你好! Git——企业级开发模型

企业级开发模型&#xff08;6&#xff09; 一、删除远程分支&#xff0c;git branch -a &#xff08;查看所有本地分支与远程分支&#xff09;还能看到已经删除的分支&#xff0c;怎么解决&#xff1f;二、企业级开发流程2.1 企业级开发流程2.2 系统开发环境 三、Git分支设计模…...

力扣面试150 查找和最小的 K 对数字 最小堆 去重

Problem: 373. 查找和最小的 K 对数字 &#x1f468;‍&#x1f3eb; 参考题解 class Solution {public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) {// 创建一个大小为 k 的结果列表&#xff0c;用于存储和最小的 k 个数对List<Li…...

Oceanbase 执行计划

test100 CREATE TABLE `test100` ( `GRNT_CTR_NO` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT 担保合同编号, `GRNT_CTR_TYP` varchar(3) COLLATE utf8mb4_bin NOT NULL COMMENT 担保合同类型, `COLC_GRNT_IND` varchar(1) COLLATE utf8mb4_bin DEFAULT NULL …...

精品丨模型关系介绍

PowerBI中的模型关系相信小伙伴们都不会感觉到陌生&#xff0c;因为一份优秀的报表无法离开数据模型的支撑。 对比其它BI类工具而言&#xff0c;白茶认为其建模功能才是最为突出的功能点。 模型关系类型 PowerBI中我们常用的模型关系一共包含5类&#xff1a; 一对一关系(1:1) …...

CentOS7 配置 nginx 和 php 方案

配置方案 一、安装软件二、编写配置文件&#xff0c;连接PHP三、引用文件四、测试 鉴于网上教程错综复杂&#xff0c;写下一这篇文章 本教程只需要三步即可 一、安装软件 yum install -y nginx php php-fpm二、编写配置文件&#xff0c;连接PHP 一般情况下在安装完 nginx 后…...

Promise.all全面解析:使用方法与实战技巧

Promise是JavaScript中处理异步操作的重要机制&#xff0c;它提供了一种优雅的方式来处理异步回调&#xff0c;避免了传统回调地狱的问题。而Promise.all作为Promise的一个静态方法&#xff0c;更是在处理多个异步操作时发挥着关键作用。本文将全面解析Promise.all的使用方法&a…...

NLP从零开始------9文本进阶处理之文本相似度计算

1.文本相似度计算简介 在自然语言处理中&#xff0c;经常会涉及度量两个文本相似度的问题。在诸如对话系统和信息减速等中&#xff0c;度量句子或短语之间的相似度尤为重要。在新闻学传媒中应用文本相似度可以帮助读者快速检索到想要了解的报道。 文本相似度的定义式如下所示&a…...

Electron 在 MAC 上的 build 签名应用配置

Electron 在 MAC 上的 build 签名应用配置涉及多个步骤,包括准备开发者账号、生成证书和配置文件、配置环境变量以及使用适当的工具进行签名和公证。以下是一个详细的配置流程: 一、准备开发者账号 首先,你需要在 Apple 开发者网站 注册并拥有一个开发者账号。这个账号将用…...

15 交换机命令行配置

交换机命令行配置 一、交换机命令行基本配置 &#xff08;一&#xff09;配置主机名 Switch>enable Switch#configure terminal Switch(config)#hostname S1&#xff08;二&#xff09;查看配置信息 Switch#show running-config Building configuration...Current confi…...

工作流之Flowable与SpringBoot结合

文章目录 1 Flowable1.1 flowable-ui部署运行1.2 绘制流程图1.2.1 绘制1.2.2 绘图细节1.2.3 bpmn文件导入 1.3 后台项目搭建1.3.1 pom.xml1.3.2 数据库表说明 1.4 流程引擎API与服务1.4.1 主要API1.4.2 示例 1 Flowable 1.1 flowable-ui部署运行 flowable-6.6.0 运行 官方dem…...

python实战:数据分析基础知识

当涉及到数据分析和统计建模时&#xff0c;Python 提供了强大的工具和库&#xff0c;如 pandas、numpy、statsmodels 和 matplotlib。本文将以一个实际的案例为例&#xff0c;介绍如何利用这些工具进行回归分析&#xff0c;并通过可视化工具进行结果展示和解释。 1. 背景介绍 …...

Grafana深入讲解

Grafana 深入讲解 目录 概述Grafana 基本概念 2.1 Grafana 简介2.2 Grafana 功能特性2.3 Grafana 架构 Grafana 安装与配置 3.1 安装 Grafana3.2 配置 Grafana3.3 验证 Grafana 安装 Grafana 数据源 4.1 支持的数据源类型4.2 添加数据源4.3 配置 Prometheus 数据源 Grafana 仪…...

002 git

下载 使用git clone命令下载特定分支 打开终端或命令行界面。 使用cd命令切换到你想存放仓库副本的本地目录。 使用以下命令克隆仓库的develop分支到本地&#xff08;注意替换<仓库URL>为实际的仓库URL&#xff09;&#xff1a; git clone -b develop --single-branch…...

MySQL --- 用户管理

一、用户信息 MySQL中的用户信息&#xff0c;都存储在系统数据库mysql的表user中 user表的结构如下 这里主要介绍以下几个字段 host &#xff1a; 表示这个用户可以从哪个主机登陆&#xff0c;如果是 localhost &#xff0c;表示只能从本机登陆 user&#xff1a; 用户名 a…...

Linux 错误码

目录 一、概述二、含义三、错误处理函数1、IS_ERR2、strerr、perror 一、概述 在 Linux 系统中&#xff0c;错误码是用来表示操作系统运行过程中发生的错误的数字代码。错误码通常由负数表示&#xff0c;0 表示成功&#xff0c;正数表示警告或其他非致命错误。 为了开发者更好…...

《向量数据库指南》——开源社区与商业化的平衡

开源社区与商业化的平衡 Lynn:我觉得这个说的特别好,因为开发者工具其实有很多,但是事实上真正去做开源的这种社区的,尤其是做的比较大的,其实这样的企业还是比较少的。那么当初在起步的时候就这么坚定的去选择开源,然后这么短的时间能获得这么多产品反馈。其实让我想到那…...

记录一次echarts图表大数据量轮询刷新页面卡死问题的优化

项目场景: 在我们的项目架构中,集成的Echarts图表组件采用了折线图,业务需求即每300毫秒自动更新图表上的数据,并且每一次的数据点数量达到了约700个,折线图刷新的很快,每300毫秒就要刷新数据 问题描述 开发过程中发现在这种数据量请求频率下,大概2个小时左右就会导致…...

补录:day023-回溯法

40.组合II 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 思路:组合题目二&#xff0c;这个题…...

【物联网】(防水篇)电子产品如何做到IPX7级别的防水?

电子产品如何做到IPX7级别的防水&#xff1f; 要使电子产品达到 IPX7 级别的防水&#xff0c;通常需要以下几个方面的措施&#xff1a; 1. 密封设计&#xff1a; 在产品的外壳连接处、接口、按键等部位&#xff0c;采用高质量的密封材料&#xff0c;如橡胶垫圈、硅胶密封圈等…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...