博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线性表9 - 数据结构和算法14
阅读量:5155 次
发布时间:2019-06-13

本文共 1582 字,大约阅读时间需要 5 分钟。

线性表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

你可能感兴趣的文章
You are not late! You are not early!
查看>>
基于Flask框架的Python web程序的开发实战 <二> 项目组织结构
查看>>
Linux grep及正则表达式
查看>>
P2023 [AHOI2009]维护序列
查看>>
HDU2216:Game III(BFS)
查看>>
JQuery语法 JQuery对象与原生对象互转 文档就绪函数与window.onload的区别
查看>>
swift-01-利用元组判断字符串出现次数
查看>>
LOJ10155数字转换
查看>>
JQuery实现轮播图及其原理
查看>>
zoj 3540
查看>>
Leetcode475.Heaters供暖器
查看>>
霍夫变换(Hough Transform)
查看>>
tomcat 内存溢出问题
查看>>
C++ OI图论 学习笔记(初步完结)
查看>>
USACO Broken Necklace
查看>>
中小型网站生存之道
查看>>
如何获取repeater某行第一列的值
查看>>
结对编程之实战
查看>>
TTButton 的正确使用的方法
查看>>
gdb打印STL和boost容器
查看>>