线性表9

让编程改变世界

Change the world by program


静态链表

这一节课,我们试图通过静态链表的讲解来瞻仰古人的伟大!(似乎人总要挂了之后才能变得伟大~_~) 神马是静态链表呢?又跟古人能有半毛钱关系?   地球人都知道C语言是个伟大的语言,他的魅力在于指针的灵活性,使得它可以非常容易地操作内存中的地址和数据,这比其他高级语言更加灵活方便。(面向对象使用对象引用机制间接地实现了指针的某些功能) 但是古人还木有C语言丫,木有JAVA丫,只有原始的Basic,Fortran等早期的编程语言,这些语言没有类似于C的指针功能,但是他们又想描述单链表,就没法实现了,怎么办呢?   真是不得不佩服他们的智慧,有人想出了用数组代替指针来描述单链表。大家能猜一猜他们是如何做到的么? 在讲解原理之前,先让大家知道这种用数组描述的链表叫做静态链表,这种描述方法叫做游标实现法。   [caption id="attachment_1900" align="alignnone" width="580"] 静态链表[/caption]   线性表的静态链表存储结构 [codesyntax lang="c"]

#define MAXSIZE 1000typedef struct
{ElemType data;  // 数据int cur;        // 游标(Cursor)
} Component, StaticLinkList[MAXSIZE];

[/codesyntax]   对静态链表进行初始化相当于初始化数组: [codesyntax lang="c"]

Status InitList(StaticLinkList space)
{int i;for( i=0; i < MAXSIZE-1; i++ )space[i].cur = i + 1;space[MAXSIZE-1].cur = 0;return OK;
}

[/codesyntax]

小甲鱼备忘录:

我们对数组的第一个和最后一个元素做特殊处理,他们的data不存放数据。 我们通常把未使用的数组元素称为备用链表。 数组的第一个元素,即下标为0的那个元素的cur就存放备用链表的第一个结点的下标。 数组的最后一个元素,即下标为MAXSIZE-1的cur则存放第一个有数值的元素的下标,相当于单链表中的头结点作用。

静态链表的插入操作

有些喜欢思考的鱼油会说,你这不是挂羊头买鱼肉吗? 还是数组丫,貌似没看出太多单链表的端倪~_~   那我们接着从行为学的角度来剖析下,静态链表如何模拟单链表进行插入和删除的操作呢? 现在我们来看看如何实现元素的插入。   静态链表中要解决的是:如何用静态模拟动态链表结构的存储空间分配,也就是需要的时候申请,不需要的时候释放。 我们前面说过,在动态链表中,结点的申请和释放分别借用C语言的malloc()和free()两个函数来实现。   在静态链表中,操作的是数组,不存在像动态链表的结点申请和释放的问题,所以我们需要自己实现这两个函数,才可以做到插入和删除操作。 为了辨明数组中哪些分量未被使用,解决的办法是将所有未被使用过的及已被删除的用游标链成一个备用链表,应该如何操作呢?请大家课后头脑风暴一下! [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/BdsUAwoPVQCHkxNRc1d']视频下载[/Downlink] [Downlink href='http://urlxf.qq.com/?vAVnQbF']备胎下载[/Downlink]

转载于:https://www.cnblogs.com/LoveFishC/archive/2012/11/13/3846272.html

线性表9 - 数据结构和算法14相关推荐

  1. 线性表7 - 数据结构和算法12

    线性表7 让编程改变世界 Change the world by program 单链表的整表创建 对于顺序存储结构的线性表的整表创建,我们可以用数组的初始化来直观理解. 而单链表和顺序存储结构就不一 ...

  2. 线性表顺序存储结构操作算法

    线性表顺序存储结构操作算法 ** 顺序表的初始化 线性表的插入算法 线性表的删除算法 线性表的查找算法** 根据书本的知识线性表顺序存储结构的操作算法其实是我们刚进入数据结构与算法的必修课 其实算法无 ...

  3. 线性表:顺序队列算法实现

    顺序队列介绍 顺序队列是队列的顺序存储结构,顺序队列实际上是运算受限的顺序表.我们知道队列是一种先将先出的数据结构,它是一种受限制的线性表,我们的顺序队列是一种队列,采用的是顺序存储结构.与其对应的是 ...

  4. php数据结构之线性表,php数据结构之顺序链表与链式线性表示例

    本文实例讲述了php数据结构之顺序链表与链式线性表.分享给大家供大家参考,具体如下: 链表操作 1. InitList(L):初始化链表 2. DestroyList(L):删除连接 3. Clear ...

  5. python hash表_python数据结构与算法——哈希表

    哈希表 学习笔记 参考翻译自:<复杂性思考> 及对应的online版本:http://greenteapress.com/complexity/html/thinkcomplexity00 ...

  6. 数据结构 线性表java_java数据结构--线性表

    一.线性表基本概念 线性表是其组成元素间具有线性关系的一种线性结构,是由n个数据类型相同的元素构成的有限序列.其具有"一对一"的逻辑关系,与位置有关,除了头尾元素之外,每一个元素都 ...

  7. mysql 线性表_数据结构之线性表

    概要 参考<大话数据结构>,把常用的基本数据结构梳理一下. 线性表 定义 线性表(List):零个或多个数据元素的有限序列. 若将线性表记为 \((a_1, \cdots, a_{i-1} ...

  8. c语言构造一个空线性表l,数据结构线性表顺序结构的定义与实现C语言-Go语言中文社区...

    大家好,今天给大家总结了一下数据结构里面的线性表的顺序结构,顺序表表示的是用一组地址连续的存储单元依次存储线性表的数据元素,所以顺序结构的实现一般采用数组的方式来实现,存储空间也采用动态分配的方式.在 ...

  9. mysql 线性表_数据结构-线性表之顺序表

    线性表 (1)逻辑结构和物理结构 物理结构:数据元素在内存中真实的存放次序,有可能是连续存放的,也可能是散落于内存里. 逻辑结构:为了便于描述数据元素之间的关系,我们想象出数据之间应该有某种的对应关系 ...

最新文章

  1. 鸿蒙2.0操作体验,鸿蒙2.0操作系统正式版-华为鸿蒙2.0操作系统正式版官方预约 v1.0.0-优盘手机站...
  2. 什么是ATM(异步传输模式)?—Vecloud微云
  3. 俄罗斯方块 Tetris
  4. Citrix VDI-in-a-Box 第二篇:架构篇
  5. python集合运算符_Python 集合、字典、运算符
  6. HTML5 布局元素
  7. Windows8 游戏开发教程-二、关于资源和工具
  8. XSS-Game level 8
  9. Linux之du命令
  10. 麦克纳姆轮全向移动机器人速度空间分析
  11. 各种计算机控制系统特点小结
  12. linux 编译chromium,简易编译Chromium OS内核教程
  13. 20180925-7 规格说明书——吉林市两日游
  14. RabbitMQ使用规范
  15. 目前最值得入手的蓝牙耳机有哪些?四款高性价比蓝牙耳机推荐
  16. USB Type-C数据线美国新标准UL9990报告检测项目
  17. 经过离散点画平滑曲线(贝塞尔3次)
  18. ASEMI整流二极管10A10参数,10A10压降,10A10作用
  19. 推荐几个免费的PDF to Word文件转换器
  20. 当人工智能(AI)撞上供应链

热门文章

  1. python 100实例_[Python] Python 100例
  2. cookie代码加时间多久出现一次_一文彻底搞懂Cookie、Session、Token到底是什么
  3. python调用第三方接口获取数据_python调用接口,python接收post请求接口(附完整代码)...
  4. python商品管理系统_基于django的奶茶店的管理系统
  5. mysql导入表error 1067_mysql 导入数据error 1067(42000) Invalid default value for 'update'
  6. 两车相撞的力怎么计算_两车都向中间并线时相撞 算谁的责任
  7. 表达式求值(nyoj305)
  8. STM32F103单片机RTC实时时钟的使用
  9. STM8学习笔记---定时器 TIM2功能实现
  10. GraphicsStatsService之2 UI绘制的时间信息来源