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

85.链表总结

链表总结

链表总结与进阶
抽象数据类型(ADT abstract data type)与抽象数据接口(ADI abstract data Interface)

链表实际上就是对于结构体、结构体指针和结构体内可以包含指向同类型的结构体指针不可以包含指向同类型的结构体的应用!

链表首先有一个指向同类型结构体指针的头指针,头指针之后是结构体节点,每个结构体节点内包含了指向同类型结构体的指针,用于指向下一个结构体节点。

实际使用时,链表的每个链节叫做节点node,每个节点包括携带信息的结构体Item和指向下一个节点node(结构体)的结构体指针。
就不像初始实现的链表那样,而是将数据和指针分开。

举例:
struct people
{
char name[size_len];
int age;
}
typedef struct people Item;
定义Item的好处:接口固定,数据结构改变后,只需要重新定义Item的结构体内部的内容,不必更改其他的接口定义。

定义链表节点:

其他节点

typedef struct node
{
Item item;
struct node* next;
}Node;

头节点

头节点要再做一层封装,List专门用于定义头节点指针(指向节点的结构体指针)。
typedef Node* List;

List people_head;

如果想要头节点包含更多的信息,可以进一步定义头节点为
typedef struct list
{
Node* head;
int size;
}List;

头指针的初始化:
方法一:
people_head =NULL;//指针初始化为NULL
方法二:
people_head.head = NULL;
people_head.size = 0;

数据隐藏:

定义一个初始化函数,将具体的初始化隐藏起来InitializeList()
使用该程序的程序员不必知道初始化的细节,只需要调用初始化的API即可。数据隐藏是一种从变成的更高层次隐藏数据表示的细节的艺术。
/* 操作: 初始化链表*/
/* 前提条件:头指针指向一个链表*/
/* 后置条件(执行结果):该链表初始化为空*/

C语言把所有类型和函数的信息集成为一个软件包的方法:(使用静态库)把类型定义和函数原型放在头文件中,标注好前提条件、后置条件的注释

结构体成员访问
结构体指针的成员访问,两种方法

相关文章:

85.链表总结

链表总结 链表总结与进阶 抽象数据类型(ADT abstract data type)与抽象数据接口(ADI abstract data Interface) 链表实际上就是对于结构体、结构体指针和结构体内可以包含指向同类型的结构体指针不可以包含指向同类型的结构体的应…...

【博学谷学习记录】超强总结,用心分享|狂野大数据课程【DataFrame的相关API】的总结分析

操作dataFrame一般有二种操作的方式, 一种为SQL方式, 另一种为DSL方式 SQL方式: 通过编写SQL语句完成统计分析操作DSL方式: 领域特定语言 指的通过DF的特有API完成计算操作(通过代码形式)从使用角度来说: SQL可能更加的方便一些, 当适应了DSL写法后, 你会发现DSL要比SQL更加…...

粒子群优化最小二乘支持向量机SVM回归分析,pso-lssvm回归预测

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 SVM应用实例,粒子群优化最小二乘支持向量机SVM回归分析 代码 结果分析 展望 支持向量机SVM的详细原理 SVM的定义 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大…...

lavis多模态开源框架学习--安装

安装lavis安装lavis测试安装问题过程中的其他操作安装lavis 因为lavis已经发布在pypi中,所以可以直接利用pip安装 pip install salesforce-lavis测试安装 from lavis.models import model_zoo print(model_zoo) # # Architectures Types # # …...

【IDEA】如何在Tomcat上创建部署第一个Web项目?

看了网上很多教程,发现或多或都缺失了一些关键步骤信息,对于新手小白很不友好,那么今天就教大家如何在Tomcat服务器(本地)上部署我们的第一个Web项目: 共分为三个部分: 1. IDEA创建Web项目&am…...

程序员画流程图的工具Draw.io

Draw.io 是一个很好用的免费流程图绘制工具,制图结果本质上是xml文件,web版和桌面版可以支持导出图像(png或者svg矢量图都可以)。你可以利用它绘制一系列的图表、图示或图形,包括流程图、UML类图、组织结构图、泳道图、E-R 图、文…...

CAPL脚本DBLookup函数动态访问CAN 报文的属性

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…...

2022年显卡性能跑分排名表

2022年显卡性能跑分排名表(数据来源于快科技)这个版本的电脑显卡跑分榜第一的是NVIDIA GeForce RTX 3090 Ti显卡。由于显卡跑分受不同的测试环境、不同的显卡驱动版本以及不同散热设计而有所不同,所以显卡跑分会一直变化。 前二十名的台式电…...

mx-font

Abstract 短镜头字体生成(FFG)方法必须满足两个目标:生成的图像既要保留目标字符的底层全局结构,又要呈现多样化的局部参考风格。现有的FFG方法旨在通过提取通用表示样式或提取多个组件样式表示来分离内容和样式。然而,以往的方法要么无法捕捉不同的本地风格,要么无法推广到…...

基于S32K148快速调试TJA1101

文章目录1.前言2.TJA1101简介3.TJA1101调试3.1 硬件3.1.1 整体框图3.1.2 评估板3.1.2.1 参考原理图3.1.2.2 引脚说明3.1.3 转接板3.1.3.1 参考原理图3.1.3.2 模式配置3.1.3.3 原理介绍3.2 软件3.2.1 物理层(TJA1101):3.2.2 数据链路层&#x…...

万字长文详解webpack知识图谱

webpack概念 概念 Webpack 是一种用于构建 JavaScript 应用程序的静态模块打包器,它能够以一种相对一致且开放的处理方式,加载应用中的所有资源文件(图片、CSS、视频、字体文件等),并将其合并打包成浏览器兼容的 Web…...

模板测试(Stencil Test)

模板测试可以用来针对特殊的区域进行渲染控制,实现有趣的效果,例如绘制物体轮廓。在 使用模板测试的时候,一般的步骤如下: 启用模板测试,以便写入数值到模板缓冲中渲染物体,根据渲染的物体将特定的数值写入到模板缓冲中禁用模板缓冲写入设置模板函数,根据于模板缓冲中的…...

【Go语言学习】安装与配置

文章目录前言一、Go语言学习站二、安装与配置1.安装2.环境变量配置3.Gland编辑器安装与配置Hello, World!总结前言 Go语言特性 Go,又称为 Golang,是一门开源的编程语言,由 Google 开发。Go 语言的设计目标是提供一种简单、快速、高效、安全…...

HCIP-5OSPF区域类型学习笔记

1、OSPF区域类型 OSPF提出了区域的概念(AREA),区域是将所有运行OSPF 的路由器人为的分成不同的组,以区域ID来标示。在区域内路由计算的方法不变,由于划分区域之后,每个区域内的路由器不会很多,…...

C语言再学习第三章

例题3-1 编写一个函数&#xff0c;实现华氏度和摄氏度的转化。 已知公式&#xff1a;c &#xff08;5/9)*(f-32) #include <stdio.h>double f_value 0; double c_value 0; int main(void) {printf("请输入华氏温度\n");scanf("%lf",&f_valu…...

【aiy篇】小目标检测综述

小目标检测&#xff08;Small Object Detection&#xff09;是指在图像中检测尺寸较小的目标物体&#xff0c;通常是指物体的尺寸小于图像大小的1/10或者更小&#xff0c;COCO为例&#xff0c;面积小于等于1024像素的对象维下目标。小目标检测是计算机视觉领域的一个重要研究方…...

常用Linux命令的基本使用

序号 命令 对应英文 作用 1 ls list 查看当前文件夹下的内容 2 pwd print work directory 查看当前所在文件夹 3 cd[目录名] changge directory 切换文件夹 4 touch[文件名] touch 如果文件不存在&#xff0c;新建文件 5 mkdir[目录名] make directory …...

对跳表的深入理解

一&#xff0c;如何理解跳表 简单说跳表&#xff08;Skip list&#xff09;就是链表的“二分查找”。redis 的有序集合用的就是跳表算法。跳表是一种各方面性能都比较优秀的动态数据结构&#xff0c;可以支持快速地插入、删除、查找操作&#xff0c;写起来也不复杂&#xff0c…...

C++017-C++冒泡排序与插入排序

文章目录C017-C冒泡排序与插入排序冒泡排序与插入排序目标冒泡排序排序规则冒泡排序优化插入排序题目描述在线练习&#xff1a;总结C017-C冒泡排序与插入排序 在线练习&#xff1a; http://noi.openjudge.cn/ https://www.luogu.com.cn/ 冒泡排序与插入排序 参考&#xff1a;…...

数据结构基础之链表

目录 前言 1、什么是链表 2、添加元素 3、虚拟头结点 4、查询&修改元素 5、删除元素 附&#xff1a;完整代码 前言 又到周末了&#xff0c;修整了一天&#xff0c;继续来写点东西吧&#xff0c;今天&#xff0c;我们来学习数据结构中的另一种基础的数据结构——链表…...

OpenClaw更新操作

文章名称 目录文章名称前言一、OpenClaw更新26.3.31版本二、飞书更新26.3.31版本我的龙虾日记前言 OpenClaw由于每个版本都有大量内容&#xff0c;更新的时候会出很多问题。记录一下出现过的问题 一、OpenClaw更新 推荐采用重装的方式进行更新,由于会进行新手教程.如果你不想再…...

解锁Unity游戏插件开发:从概念到实战的MelonLoader全攻略

解锁Unity游戏插件开发&#xff1a;从概念到实战的MelonLoader全攻略 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 一、认知篇…...

暗黑破坏神2存档全功能解决方案:d2s-editor高效修改与管理指南

暗黑破坏神2存档全功能解决方案&#xff1a;d2s-editor高效修改与管理指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor是一款专为《暗黑破坏神2》玩家设计的开源存档编辑工具&#xff0c;提供d2s格式&#xff08;…...

DLSS Swapper实战指南:高效管理DLSS版本3步达成游戏性能跃升

DLSS Swapper实战指南&#xff1a;高效管理DLSS版本3步达成游戏性能跃升 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 当你在4K分辨率下启动《赛博朋克2077》&#xff0c;满心期待沉浸在夜之城的霓虹中时&#xff0c…...

阅读APP书源完全指南:3种快速导入方法与问题解决方案

阅读APP书源完全指南&#xff1a;3种快速导入方法与问题解决方案 【免费下载链接】Yuedu &#x1f4da;「阅读」自用书源分享 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 「阅读」APP书源开源项目为小说爱好者提供了一个强大的解决方案&#xff0c;让您能够在一…...

数学解题能力实测:通义千问QwQ-32B vs Claude 3.5 Sonnet,谁才是理科生最佳AI助手?

数学解题能力实测&#xff1a;通义千问QwQ-32B vs Claude 3.5 Sonnet&#xff0c;谁才是理科生最佳AI助手&#xff1f; 当一道复杂的AIME竞赛题摆在面前时&#xff0c;你会选择哪种AI助手&#xff1f;是擅长分步推导的开源新秀QwQ-32B&#xff0c;还是以逻辑严谨著称的Claude 3…...

多任务学习调参新思路:如何让模型自己决定分类和回归任务谁更重要?

多任务学习中的自适应权重分配&#xff1a;让模型学会动态平衡分类与回归任务 想象一下&#xff0c;你正在训练一个自动驾驶系统&#xff0c;它需要同时完成车辆检测&#xff08;分类任务&#xff09;和深度估计&#xff08;回归任务&#xff09;。传统方法中&#xff0c;你需要…...

三菱FX2N与士林变频器MODBUS通讯实战指南

1. 硬件连接&#xff1a;从零搭建通讯桥梁 第一次接触三菱FX2N和士林变频器的MODBUS通讯时&#xff0c;最让我头疼的就是硬件接线。别看只是几根线&#xff0c;接错了轻则通讯失败&#xff0c;重则烧毁端口。这里分享几个实操中容易踩的坑&#xff1a; 变频器端接线要点&#x…...

JNI内存泄漏吞噬GPU显存,Java AI服务OOM频发,一线工程师紧急封堵的4类隐蔽陷阱

第一章&#xff1a;Java AI 推理调试Java 在 AI 推理场景中常通过 ONNX Runtime、Deep Java Library&#xff08;DJL&#xff09;或 TensorFlow Java API 集成模型。调试过程需聚焦于输入张量形状匹配、数据类型一致性、设备绑定状态及推理结果可信度验证。启用详细日志输出 DJ…...

Nginx多服务静态资源路径冲突解决方案

在Nginx反向代理多个Flask服务时&#xff0c;不同服务的静态资源路径会发生冲突&#xff0c;导致服务A的页面加载了服务B的CSS/JS文件&#xff0c;或者找不到静态资源返回404错误。 问题场景 部署架构 域名: mathcoding.top ├── 主服务 (端口5000) → 路径前缀: / └──…...