当前位置:首页 > C++目录 > 正文内容

C++链表结构——单链表

亿万年的星光4年前 (2021-12-04)C++目录8785

0.前言

存储方式分为顺序存储结构和链式存储结构。

顺序存储结构的优缺点:

优点:可以通过一个简单的公式随机存取表中的任一元素,逻辑关系上相邻的两个元素在物理位置上也是相邻的,且很容易找到前驱跟后继元素。

缺点:在线性表的长度不确定时,必须分配最大的存储空间,使存储空间得不到充分利用,浪费了宝贵的存储资源;线性表的容量一经定义就难以扩充;在插入和删除线性表的元素时,需要移动大量的元素,浪费了时间。

链式存储结构

在程序执行过程中,通过两个命令向计算机随时申请存储空间或随时释放存储空间,以达到动态管理、使用计算机的存储空间、保证存储资源的充分利用。这样的存储方式称为动态存储。


1.基本概念

为了表示任意存储单元之间的逻辑关系,对于每个数据元素来说,除了要存储它本身的信息(数据域、data)外,还要存储它的直接后继元素的存储位置(指针域、link或next)。我们把这两部分信息合在一起称为一个“结点node”。

(1)N个结点链接在一起就构成了一个链表。N=0时,称为空链表。

(2)为了按照逻辑顺序对链表中的元素进行各种操作,我们需要定义一个变量用来存储整个链表的第一个结点的物理位置,这个变量称为“头指针、H或head”。也可以把头指针定义成一个结点,称为“头结点”,头结点的数据域可以不存储任何信息,也可以存储线性表的长度等附加信息,头结点的指针域(头指针)存储指向第一个结点的指针,若线性表为空表,则头结点的指针域为空。由于最后一个元素没有后继,所以线性表中最后一个结点的指针域为空。


2.单链表定义


类型和变量的说明

struct Node
{
    int data;
    Node * next;
};
Node * p;


申请存储单元

p = new Node;    //动态申请、空间大小由指针变量的基类型决定

指针变量的赋值:

指针变量名=NULL



    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    最小生成树—Kruskal(克鲁斯卡尔)算法

    最小生成树—Kruskal(克鲁斯卡尔)算法

    一、算法描述在一个连通加权无向图中,找到一棵最小生成树。即,找到连接所有顶点的、权值总和最小的树,且树中不包含任何环。二、核心思想贪心策略:每次从未选择的边中,选取一条权值最小的边。避免环路:如果加入...

    Code::Blocks下载安装教程

    Code::Blocks下载安装教程

    Code::Blocks 是一款免费、开源且跨平台的 C/C++ 集成开发环境。它支持 Windows、Linux 和 macOS 等多种操作系统,核心特点是轻量快速、纯专注于 C/C++ 开发,并内...

    质数(素数)的判断

    一、定义法// 1 定义法(除了1和他本身之外,没有任何一个数能被整除)(试除法) bool is_prime3(unsigned long lon...

    【C++图形化编程】鼠标函数及鼠标画板

    【C++图形化编程】鼠标函数及鼠标画板

    0.前言这篇文章简单介绍一下利用鼠标画图的程序#include<graphics.h> #include<conio.h> int main(){ initg...

    【数论】同余定理与同余方程

    定义同余定理是数论中的一个重要概念。它的定义是这样的:给定一个整数m,如果两个整数a和b满足(a-b)能够被m整除,即(a-b)/m 得到一个整数,那么就成整数a和b对模m同余,记作a≡b(mod m...

    CSP-J2021年普及组复赛T4——小熊的果篮

    【题目描述】    小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依 次用正整数 1、2、3、……、n 编号。连续排在一起的同一种...