`
XiangdongLee
  • 浏览: 90786 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

【静态链表】

阅读更多
本文围绕以下四个部分展开:

一、静态链表
二、插入
三、删除
四、优缺点






一、静态链表

        1. 概念

        C语言有指针,Java、C#等有对象引用机制,因此也间接实现了指针的某些作用。但对于像Basic、Fortran等早期的高级语言,是没有指针的。

        若不使用指针,如何处理链表结构?使用数组来代替指针,来描述单链表。

        这种用数组描述的链表叫做静态链表。(给没有指针的高级语言设计的一种实现单链表能力的方法。)

        游标实现法:

        让数组的元素均由两个数据域组成:data(数据域)和cur(游标)。即:数组的每个下标都对应一个data和一个cur。

        data:用来存放数据元素(要处理的数据)。

        cur:相当于单链表的next指针,存放该元素的后继在数组中的下标。


        2. 静态链表存储结构





        3. 注意

        (1)通常将数组建立得大一些,以便有一些空闲空间可以便于插入时不至于溢出。

        (2)数组的第一个和最后一个元素不存数据,作为特殊元素处理。




        4. 例子





二、插入

        例子:上图中,在乙和丁之间插入丙。



        (1)动态链表中,结点的申请使用的是malloc()函数。在静态链表中,操作的是数组,因此必须自己实现这样的函数,用来做插入操作。

        解决办法:将所有未被使用过的及已被删除的分量用游标链成一个备用链表。每当插入时,从备用链表上取得第一个结点作为待插入的新结点。





        (2)插入的算法如下:






三、删除

        例子:上图中,删除甲。



        (1)动态链表中,结点的申请使用的是free()函数。在静态链表中,操作的是数组,因此必须自己实现这样的函数,用来做删除操作。




        其中,j=L[999].cur=1, L[k].cur=L[j].cur,即:L[999].cur=L[1].cur=2。意思是:甲已删除,现在乙是第一个元素。

        代码中的:Free_SSL(L,j);如下。



        代码中,space[1].cur=space[0].cur=8,意思是:把8给“甲”所在下标为1的分量的cur。space[0].cur=k=1,意思是:让删除的位置成为第一个优先空位,把它存入第一个元素(下标为0)处的cur中。





四、优缺点








整理时重点参考:《大话数据结构》程杰著
  • 大小: 50.8 KB
  • 大小: 33.4 KB
  • 大小: 54.5 KB
  • 大小: 45.4 KB
  • 大小: 49.2 KB
  • 大小: 189.4 KB
  • 大小: 80.1 KB
  • 大小: 334.5 KB
  • 大小: 153.4 KB
  • 大小: 43.2 KB
  • 大小: 25.6 KB
  • 大小: 130.9 KB
  • 大小: 110.7 KB
  • 大小: 109.5 KB
3
2
分享到:
评论

相关推荐

    静态链表 C实现

    静态链表是一种在内存中预先分配好固定大小的存储空间,并通过指针链接节点的数据结构。在C语言中,静态链表的实现通常涉及到结构体、指针和数组的运用。下面将详细介绍静态链表的概念、优点、缺点以及如何用C语言...

    静态链表C语言实现

    静态链表是一种特殊形式的数据结构,通常在内存空间有限或者需要预分配所有元素的情况下使用。相较于动态链表,静态链表在内存管理上有所不同,因为它的节点是在编译时静态分配的。下面将详细讨论静态链表的实现及其...

    C语言数据结构 静态链表

    静态链表的实现和操作 静态链表是一种常用的数据结构,静态链表是指在程序设计中,链表的结点是预先分配的,且链表的长度固定不变。静态链表的优点是可以快速地插入、删除元素,并且可以避免动态分配内存带来的开销...

    静态链表的创建

    在C语言中,静态链表是一种特殊的链表实现方式,与传统的动态链表不同,它在编译时就分配了所有节点的内存空间。这种数据结构在某些情况下能提供更高效的内存管理和操作,尤其是在内存有限或者对内存分配有特殊要求...

    c语言实现静态链表

    c语言实现的静态链表

    静态链表的操作

    静态链表是一种特殊类型的数据结构,主要用于实现线性数据集合。与动态链表不同,静态链表的存储空间在编译时就已经固定,这使得它在某些场景下具有一定的优势。以下是对静态链表操作的详细说明: 1. 增加元素:在...

    数据结构笔记之线性表(-):静态链表表示与实现

    静态链表与传统的动态链表不同,动态链表中的节点在内存中是分散存储的,而静态链表的所有节点存储在预先分配的连续内存空间中。这种设计提供了更高效的内存管理,但同时也限制了表的大小,因为必须在编译时就确定表...

    静态链表的使用

    ### 静态链表的使用 #### 一、静态链表的概念与特点 静态链表是一种特殊的数据结构,它结合了链表和数组的特点。通常,在编程中链表是通过指针连接各个节点实现的,而静态链表则是利用数组来模拟链表的行为。在...

    静态链表和动态链表详细讲解教程

    静态链表和动态链表详细讲解教程 本资源讲解了链表的基本概念和实现方式,着重介绍了静态链表和动态链表的区别和应用场景。链表是一种常见的数据结构,它由多个节点组成,每个节点都包含一个数据域和一个指向下一个...

    静态链表基本操作

    静态链表是一种在内存中预先分配好固定数量节点的数据结构,与动态链表不同,它不依赖于堆内存的分配。这种数据结构在某些特定情况下,如资源受限或需要高效预分配的情况,可能会有优势。在本场景中,我们探讨的是...

    一、静态链表的定义 二、静态链表的设计 三、静态链表的操作 总结 附录 前言 你认识静态链表吗?听起来是不是很陌

    静态链表一、静态链表的定义 二、静态链表的设计 三、静态链表的操作 总结 附录 前言 你认识静态链表吗?听起来是不是很陌生呢?本文将较为详细的向你介绍它,感兴趣的话就一起来看看吧。 一、静态链表的定义 ...

    数据结构之静态链表的实现

    静态链表是一种特殊的链式存储结构,它与传统的动态链表不同,因为它在编译时就固定了存储空间,常用于内存有限或者需要预先分配所有元素的场合。在这个实现中,我们将探讨静态链表的基本操作,包括初始化、查找、...

    数据结构(C语言版)---静态链表

    静态链表是一种特殊的链式数据结构,它与常规动态链表有所不同,主要在于存储方式和内存分配。 静态链表,顾名思义,与动态链表相对,其链表节点是在编译时静态分配的,而不是在运行时动态分配。这种设计减少了动态...

    静态链表的实现

    对于线性链表,也可用一维数组来进行描述。这种描述方法便于在没有指针类型的高级程序设计...用数组描述的链表,即称为静态链表。在C语言中,静态链表的表现形式即为结构体数组,结构体变量包括数据域data和游标CUR。

    静态链表的删除 静态

    本程序适合初学者学习和模仿的一个静态链表的删除的生成过程。。。。

    静态链表实现

    静态链表是一种特殊形式的数据结构,它在C和C++编程中被用于组织和操作数据。与传统的动态链表不同,静态链表的节点不是在运行时动态分配内存,而是在编译时就预设了存储空间。这种实现方式使得静态链表在某些情况下...

    静态链表C语言代码实现

    关于严蔚敏版数据结构的静态链表的代码实现,C语言实现

Global site tag (gtag.js) - Google Analytics