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

Linux-数据结构-线性表-单链表

一.链表的概念

【1】线性表的链式存储


    解决顺序存储的缺点,插入和删除,动态存储问题。


【2】特点:


       线性表链式存储结构的特点是一组任意的存储单位存储线性表的数据元素,存储单元可以是连续的,也可以不连续。可以被存储在任意内存未被占用的位置上。
    
       所以前面的顺序表只需要存储数据元素信息就可以了。在链式结构中还需要一个元素存储下一个元素的地址。


   
【3】结构:

    为了表示每个数据元素,ai与其直接后继数据元素ai+1之间的逻辑关系,对ai来说,除了存储其本身的信息外,还需要存一个指示器直接后续的信息。把存储元素信息的域叫数据域,把存储直接后继位置的域叫指针域。这两部分信息组成数据元素ai的存储映像,叫结点(Node);

二.链表的常规操作  ADT

单链表中,c语言的描述
typedef struct person {
    char name[32];
    char sex;
    int age;
    int score;
}DATATYPE;

typedef struct node {
    DATATYPE data;
    struct node *next,*prev;
}LinkNode;

typedef struct list {
    LinkNode *head;
    int tlen;
    int clen;
}LinkList;

LinkList *CreateLinkList(int len);
int InsertHeadLinkList(LinkList *list, DATATYPE data);
int ShowLinkList(LinkList *list);
LinkNode *FindLinkList(LinkList *list, char *name);
int DeleteLinkList(LinkList *list, char *name);
int ReviseLinkList(LinkList *list, char *name, DATATYPE data);
int DestroyLinkList(LinkList *list);
int InsertTailLinkList(LinkList *list, DATATYPE data);


  三.  顺序表和链表 优缺点

    【1】存储方式:


        顺序表是一段连续的存储单元
        链表是逻辑结构连续物理结构(在内存中的表现形式)不连续

    【2】时间性能

             查找 顺序表O(1)
             链表  O(n)


    【3】插入和删除

            顺序表 O(n)
            链表   O(1)


    【4】空间性能

            顺序表 需要预先分配空间,大小固定
            链表, 不需要预先分配,大小可变,动态分配

四.源码

【1】linklist.h

   (1)定义存放数据的结构体,这里data不使用指针的原因是单链表有专门的指针域指向下一个节        点的地址

(2)定义结点包含指针域和数据域

(3)定义头,后来用于存放第一个节点的地址

【2】linklist.c

(1)创建链表头

(2)从头插入数据
1.思维导图

2.代码

(3)打印链表

(4)获取长度

(5)从尾插入

(6)查找

(7)按位置插入

(8)删除

(9)修改

(10)消除

    
 

    

相关文章:

Linux-数据结构-线性表-单链表

一.链表的概念 【1】线性表的链式存储 解决顺序存储的缺点,插入和删除,动态存储问题。 【2】特点: 线性表链式存储结构的特点是一组任意的存储单位存储线性表的数据元素,存储单元可以是连续的,也可以不连续。可以被存…...

基于SpringBoot的Mybatis和纯MyBatis项目搭建的区别

【由于之前学习MyBatis的时候是跟着视频敲的纯MyBatis项目,以至于在突然看到别人在SpringBoot项目里搭建MyBatis方式的时候很懵比…特此文字形式记录一下区别(应该还有好多种其他方式是我不知道的,主要应该就是要知道关键的流程步骤&#xff…...

通过 Python 爬虫提高股票选股胜率

此贴为Python爬虫技术学习贴 在股票中,即便有了选股规则,从5000多只股票中筛选出符合规则的股票也是十分困难的,于是想通过爬虫来实现自动化的快速选股。全文用GP代替股票 实现方案 1、指定两套规则,第一套弱约束,第…...

OpenEuler20.3 安装 Elasticsearch7.17

1、下载elasticsearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.17-linux-x86_64.tar.gz wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.17-linux-x86_64.tar.gz.sha512 shasum -a 512 -c elasticsea…...

大数据学习(68)- Flink和Spark Streaming

🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…...

Fastdata极数:中国民宿行业发展趋势报告2025

2024年,中国游客出行次数大幅上涨,旅游相关支出也复苏强劲。2025年中国旅游业还将持续稳健的复苏及增长。同时,中国旅游业将见证一场深刻的变革,这场变革的推动力是消费者对旅游期望的转变,经济因素和年轻人全新价值观…...

图论——广度优先搜索实现

99. 岛屿数量 题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。 输入描述 第一行包含两个整数 N, M,表示矩阵的行数和列数。 后续 N 行,每行…...

【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(6)

1.问题描述: 使用华为内置的MapComponent, 发现显示不出来。查看日志, MapRender底层有报错。 解决方案: 麻烦按以下步骤检查下地图服务,特别是签名证书指纹那部分。 1.一般没有展示地图,可能和没有配置…...

【MySQL】B树和B+树的区别?MySQL为什么选用B+树作为索引数据结构?

B树和B树的区别: 结构方面: 1.节点存储内容: B树: 节点同时存储索引和数据。B树:只有叶子节点存储数据记录或指向数据记录的指针,非叶子节点只存键值,用于索引。 B 树的非叶子节点可以存储更…...

鸿蒙路由 HMrouter 配置及使用一

1、学习链接 HMRouter地址 https://gitee.com/hadss/hmrouter/blob/dev/HMRouterLibrary/README.md 2、工程配置 下载安装 ohpm install hadss/hmrouter 添加编译插件配置 在工程目录下的build-profile.json5中,配置useNormalizedOHMUrl属性为true (我这项目创…...

ERC-6909 最小多代币标准

ERC-6909 Token标准是 ERC-1155 Token标准的一种简化替代方案。 ERC-1155 标准引入了一种多Token接口,使得单个智能合约能够结合可替代的和不可替代的Token(即,​ERC20 和 ERC721)。 ERC-1155 解决了多个挑战,例如降…...

各省水资源平台 水资源遥测终端机都用什么协议

各个省水资源平台 水资源遥测终端机 的建设大部分从2012年开始启动,经过多年建设,基本都已经形成了稳定的通讯要求;河北瑾航科技 遥测终端机,兼容了大部分省市的通讯协议,如果需要,可以咨询和互相学习&…...

需求分析、定义、验证、变更、跟踪(高软47)

系列文章目录 需求分析、定义、验证、变更、跟踪 文章目录 系列文章目录前言一、需求分析二、需求定义三、需求验证四、需求变更五、需求跟踪六、真题总结 前言 本节讲明需求分析、定义、验证、变更、跟踪相关知识。 一、需求分析 二、需求定义 三、需求验证 四、需求变更 五、…...

从零开始 | C语言基础刷题DAY3

❤个人主页&#xff1a;折枝寄北的博客 目录 1.打印3的倍数的数2.从大到小输出3. 打印素数4.打印闰年5.最大公约数 1.打印3的倍数的数 题目&#xff1a; 写一个代码打印1-100之间所有3的倍数的数字 代码&#xff1a; int main(){int i 0;for (i 1; i < 100; i){if (i % …...

PostreSQL指南-内幕探索-学习笔记-01-数据库集簇的逻辑与物理结构

目录 一、环境信息 二、参考内容 三、逻辑结构概念 四、物理结构概念 五、逻辑映射关系 1、数据库与oid映射关系 2、堆表对象与oid映射关系 五、物理映射关系 1、数据库与oid映射关系 2、堆表对象与oid映射关系 六、数据库文件布局 1、表格 2、postmaster.pid文件解…...

docker入门篇

使用docker可以很快部署相同的环境,这也是最快的环境构建,接下来就主要对docker中的基础内容进行讲解.Docker 是一个用于开发、交付和运行应用程序的开源平台&#xff0c;它可以让开发者将应用程序及其依赖打包到一个容器中&#xff0c;然后在任何环境中运行这个容器&#xff0…...

Unity Shader - UI Sprite Shader之简单抠图效果

Sprite抠图效果&#xff1a; 前言 在PhotoShop中我们经常会用到抠图操作&#xff0c;现在就用Shader实现一个简单的抠图效果。 实现原理&#xff1a; 使用当前像素颜色与需要抠掉的颜色相减作比较&#xff0c;然后与一个指定的阈值比较以决定是否将其显示出来&#xff1b; U…...

本地仓库设置

将代码仓库初始化为远程仓库&#xff0c;主要涉及在服务器上搭建 Git 服务&#xff0c;并将本地代码推送到服务器上。以下是详细的步骤&#xff1a; 1. 选择服务器 首先&#xff0c;你需要一台服务器作为代码托管的远程仓库。服务器可以是本地服务器、云服务器&#xff0c;甚…...

30、Vuex 为啥可以进行缓存处理

Vuex 状态管理基础与缓存的关联 Vuex 的核心概念&#xff1a; Vuex 主要由五个部分组成&#xff1a;state、mutations、actions、getters和modules。其中&#xff0c;state是存储数据的地方&#xff0c;类似于一个全局的数据仓库。在这个菜谱 APP 的例子中&#xff0c;缓存的数…...

ngx_http_conf_ctx_t

定义在 src/http/ngx_http_config.h typedef struct {void **main_conf;void **srv_conf;void **loc_conf; } ngx_http_conf_ctx_t; ngx_http_conf_ctx_t 是 Nginx 中用于管理 HTTP 配置上下文的核心结构体&#xff0c;其设计体现了 Nginx 多级配置&…...

vllm-openai多服务器集群部署AI模型

服务器配置是两台ubantu系统电脑,每台电脑安装两张4090-48G显存的显卡,共计192G显存。 服务器1 服务器2 准备工作: 1.两台电脑都已经安装了docker 2.两台电脑都已经安装了nvidia驱动 参考vllm官方资料 https://docs.vllm.ai/en/latest/serving/distributed_serving.html…...

Cluster Computer(SCI1区)投稿常见问题

Cluster Computer(SCI1区)投稿常见问题 目录 Cluster Computer(SCI1区)投稿常见问题怎么查询sci投稿的详细时间节点怎么查看sci投稿期刊邀请几个审稿人,几个审稿接受邀请**一、格式问题:作者简介与照片添加****二、审稿周期长:催稿邮件模板****三、查重超标(阈值通常20…...

在Spring Boot项目中接入DeepSeek深度求索,感觉笨笨的呢

文章目录 引言1. 什么是DeepSeek&#xff1f;2. 准备工作2.1 注册DeepSeek账号 3.实战演示3.1 application增加DS配置3.2 编写service3.3 编写controller3.4 编写前端界面chat.html3.5 测试 总结 引言 在当今快速发展的数据驱动时代&#xff0c;企业越来越重视数据的价值。为了…...

STM32---FreeRTOS事件标志组

一、简介 事件标志位&#xff1a;用一个位&#xff0c;来表示事件是否发生 事件标志组&#xff1a;一组事件标志位的集合&#xff0c;可以简单的理解时间标志组&#xff0c;就是一个整体。 事件标志租的特点&#xff1a; 它的每一个位表示一个时间&#xff08;高8位不算&…...

Word 小黑第40套

对应大猫43 主题 -浏览主题 -选择W样式标准文件就行 1级段落和2级段落&#xff08;用项目符号不影响原本段落文字符号 颜色修改为自动&#xff09; 整段变红的 不是把光标定位到红色字体那里 要选择几个红色字体 再创建样式 插入的空白页一定要是下一页&#xff0c;不能插空白…...

【Linux我做主】浅谈Shell及其原理

浅谈Linux中的Shell及其原理 Linux中Shell的运行原理github地址前言一、Linux内核与Shell的关系1.1 操作系统核心1.2 用户与内核的隔离 二、Shell的演进与核心机制2.1 发展历程2.2 核心功能解析2.3 shell的工作流程1. 用户输入命令2. 解析器拆分指令3. 扩展器处理动态内容变量替…...

【JDK17】开源应用服务器大比对

接着 next-public 源代码分析&#xff0c;Java 应用服务器选用 jetty。但是之前普遍使用 Tomcat&#xff0c;那为什么要用 jetty 么&#xff0c;除了这两个&#xff0c;Java 应用服务器开源现状并不了解&#xff0c;故而又是一篇科普性的笔记&#xff0c;以下是 又小又快的 Jav…...

CI/CD构建与注意事项

1. CI/CD 概述 1.1 定义 CI&#xff08;Continuous Integration&#xff0c;持续集成&#xff09;&#xff1a;是一种软件开发实践&#xff0c;开发团队成员频繁地将代码集成到共享的代码仓库中。每次集成都会通过自动化的构建&#xff08;包括编译、打包等&#xff09;和测试…...

数据结构篇——二叉树的存储与遍历

一、引入 书接上文&#xff0c;文于此续。上文我们学到了树的存储结构&#xff0c;那么今天&#xff0c;我们来学习下几种特殊的二叉树以及关于它的各种遍历&#xff0c;让我们一起加油吧。 二、特殊的二叉树 二叉树的特殊形式这里介绍3种&#xff0c;其中需要着重记忆的有…...

分而治之:用于 RGB-T 显著目标检测的 Confluent Triple-Flow 网络(问题)

摘要 问题一&#xff1a;RGB-thermal显著对象检测这是什么&#xff1f; RGB图像是可见光的三通道图像&#xff0c;而thermal是热红外图像&#xff0c;通常为单通道&#xff0c;记录物体的热辐射信息。结合RGB和thermal两种模态的数据&#xff0c;可以利用两者的互补信息&…...