86.【C语言】数据结构之链表的总体概述

ops/2024/10/20 19:47:58/

目录

1.回顾顺序表的缺点

2.链表

链表定义

链表结构

一种典型的链表图:单向链表

一个单向链表的结点代码示例

遍历打印单向链表代码示例

注意


1.回顾顺序表的缺点

1.由文章85.【C语言】数据结构之顺序表的中间插入和删除及遍历查找可知,在顺序表中间插入或删除效率低下

2.顺序表扩容会消耗多余的空间,导致浪费

链表可以解决上述问题

2.链表

在63.【C语言】再议结构体(上)文章提到过

链表定义

一种物理存储单元上非连续(因为用了指针)、非顺序(因为用了指针)的存储结构,用于线性方式存储数据(对比数组:元素的顺序集合)

链表的"链":链接

链表结构

中的每一个元素称为结点(node),结点包含两个部分:数据和链(链是下一个节点的地址(指针),指向下一个节点的数据),链最后一个元素包含一个空指针

*链表名是头指针(phead)的名字,下面这张图(摘自《计算机科学导论》)

一种典型的链表图:单向链表

单向链表的特点:一个节点只存一个指针

一个单向链表的结点代码示例

SList.h写入以下内容:

#pragma once
#include <stdio.h>
#include <stdlib.h>
typedef int SLTDataType;typedef struct SListNode
{SLTDataType data;struct SListNode* next;
}SLTNode;

结构体包含两部分:数据和指针,符合单链表的定义

注:

SLTDataType的全称:Single List Data Type 单链表数据类型

SListNode的全称Single List Node 单链表结点

遍历打印单向链表代码示例

SLPrint函数(遍历打印链表)代码示例,写入SList.c

void SLTPrint(SLTNode* phead)
{SLTNode* cur = phead;while (cur)//等价为cur != NULL{printf("%d->", cur->data);cur = cur->next;//cur被赋值为下一个结点的地址}printf("NULL");//读到链表的结尾存储的为空指针
}

注意

1.不要为phead断言,和顺序表的指针ps的断言不同,ps指向的是结构体,而链表可以为空链表(phead->NULL),

2.while (cur)不要写成while(cur->next),否则链表的最后一个数据无法打印

3.由于是非连续访问,因此使用cur = cur->next;

4.严谨来说,NULL在x64下表示为0x0000000000000000,在x86下表示为0x00000000


http://www.ppmy.cn/ops/127070.html

相关文章

ufw 工具介绍

UFW&#xff08;Uncomplicated Firewall&#xff09;是 Ubuntu 提供的一个易于使用的防火墙配置工具&#xff0c;简化了 iptables 的复杂配置。它通过提供简单的命令来允许或拒绝网络流量规则&#xff0c;以保护你的服务器或系统。 下面详细介绍 UFW 命令及其选项。 1. UFW 基…

CTF(四)

导言&#xff1a; 本文主要讲述在CTF竞赛中&#xff0c;web类题目file_include。 靶场链接&#xff1a;攻防世界 (xctf.org.cn) 一&#xff0c;观察页面。 可以看到一段php代码。从则段代码中我们可以知道&#xff1a; 1&#xff0c;使用include引入check.php文件&#xff…

基于Spring Boot REST API设计指南

在构建现代Web应用程序时&#xff0c;RESTful API已成为一种标准&#xff0c;使得不同的应用程序能够通过HTTP协议进行通信&#xff0c;实现资源的创建、读取、更新和删除等操作。Spring Boot作为一个功能强大的框架&#xff0c;能够轻松创建RESTful API。本文将详细介绍如何在…

H5对接海康硬盘录像机视频简单说明

开发过程中使用HTML5(通常是通过Web技术栈,如HTML、CSS、JavaScript)与海康威视(Hikvision)的硬盘录像机(DVR)进行视频对接,通常涉及以下步骤: 获取DVR的RTSP流地址:海康威视DVR支持RTSP协议,你可以通过DVR的管理界面获取每个摄像头的RTSP流地址。 使用视频播放器库…

STM32中的RAM和ROM分别是什么

RAM&#xff08;Random Access Memory&#xff0c;随机存取存储器&#xff09;和ROM&#xff08;Read-Only Memory&#xff0c;只读存储器&#xff09;是计算机系统中的两种常见存储器类型&#xff0c;它们各自有不同的功能和用途。 1. RAM&#xff08;内存&#xff09; 定义…

upload-labs靶场Pass-01

upload-labs靶场Pass-01 分析 查看提示&#xff0c;提示如下 查看源码 function checkFile() {var file document.getElementsByName(upload_file)[0].value;if (file null || file "") {alert("请选择要上传的文件!");return false;}//定义允许上传…

算法-二叉树展开单链表

这道题我们可以利用栈来做&#xff0c;利用栈先进后出的特性 每次先加入右节点再加入左节点&#xff0c;这样的话弹出的时候正好左节点在前面&#xff0c;右节点在后面满足题目要求。 然后至于是构造单链表&#xff0c;我们可以用一个prev节点 prev的left永远都是null 而prev的…

Java中的四种内部类

Java中的四种内部类&#xff0c;我们可以想象成一个家庭里的不同成员&#xff0c;每个成员都有其特殊的角色&#xff1a; 成员内部类&#xff08;Member Inner Class&#xff09; - 就像家里的孩子&#xff0c;它们属于家庭&#xff08;类&#xff09;&#xff0c;并且可以在家…