java单链表成绩表_数据结构(Java实现)-单链表(单链表实现学生成绩管理系统)...

1、链表

1.1链表的基本介绍

922b1b38aad7fd1e26ec2011a821b6c2.png

链表是以节点的方式来存储,是链式存储,从图中发现,链表的各个节点不一定是连续存储

每个节点包含data域:存储数据,next域:指向下一个节点

链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定

没有头节点单链表:也就是phead只是一个引用(指针),指向链表的第一个节点

227d65407cd184621ba836ee303c6aa9.png

有头节点单链表:phead是头节点只不过头节点的data不保存信息

d4f29e55c36a8cc68f61684d99418022.png

基本概念:链表的每个元素称为一个节点,每个节点都可以存储在内存中的不同的位置,为了表示每个元素与后继元素的逻辑关系,以便构成“一个节点链着一个节点”的链式存储结构,除了存储元素本身的信息外,还要存储其直接后继信息,因此,每个节点都包含两个部分,第一部分称为链表的数据区域,用于存储元素本身的数据信息,这里用data表示,它不局限于一个成员数据,也可是多个成员数据,第二部分是一个结构体指针,称为链表的指针域,用于存储其直接后继的节点信息,这里用next表示,next的值实际上就是下一个节点的地址,当前节点为末节点时,next的值设为空指针

1.2链表和数组的比较

数组:数组(包括结构体数组)的实质是一种线性表的顺序表示方式,它的优点是使用直观,便于快速、随机地存取线性表中的任一元素,但缺点是对其进行 插入和删除操作时需要移动大量的数组元素,同时由于数组属于静态内存分配,定义数组时必须指定数组的长度,程序一旦运行,其长度就不能再改变,实际使用个数不能超过数组元素最大长度的限制,否则就会发生下标越界的错误,低于最大长度时又会造成系统资源的浪费,因此空间效率差。

链表:链表实际上是线性表的链式存储结构,与数组不同的是,它是用一组任意的存储单元来存储线性表中的数据,存储单元不一定是连续的,且链表的长度不是固定的,链表数据的这一特点使其可以非常的方便地实现节点的插入和删除操作。链表的特性,使其在某些操作上比数组更加高效。例如当进行插入和删除操作时,链表操作的时间复杂度仅为O(1)。另外,因为链表在内存中不是连续存储的,所以可以充分利用内存中的碎片空间。除此之外,链表还是很多算法的基础,最常见的哈希表就是基于链表来实现的。

2、单向链表的具体实现

本节将具体介绍单向链表(带头结点)的结构和各种操作的具体实现

2.1单链表(带头节点)逻辑结构示意图如下

6beba621542bb17a73ed731d129e4e85.png

2.2单链表的应用实例(单链表实现学生成绩管理系统)

为了方便对链表各项操作的理解,把链表应用到具体的实例中:用带头节点的单链表实现学生成绩管理系统。对学生的成绩信息实现增删改查的操作,具体实现目标如下:

添加学生成绩信息

根据学号将学生信息插入到指定位置

显示所有学生的信息

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值