数据结构 线性表
来源:互联网 发布:linux增加一个用户命令 编辑:程序博客网 时间:2024/05/29 09:49
线性表:零个或多个数据元素的有限序列。
· 顺序线性表
表内元素顺序存储,紧密相联,有自己的顺序,类似静态一维数组,和静态一维数组不同的是,静态一维数组设定好长度后
不可变,而线性表的长度等于线性表内数据元素的个数。
· 链式线性表
链表,由数个节点组成,每个节点包括“数据域”和“指针域”,指针域指向下一个节点的地址。
· 各自优点:
链表优点:减少顺序线性表插入删除移动大量元素耗费的时间,不需要预分配存储空间,解决顺序线表可能出现的上溢和空间浪费等。
顺序有点:对于需要频繁查找,很少进行插入删除操作时节省时间。
静态链表
用数组代替指针描述的单链表,将数组看成两部分,数组存放值为数据域,其游标相当于指针指向下一个节点。
#define MaxSize 1000//链表(数组)最大值1000typedef struct{ElemType data;//数据域int cur;//指针域}Component,StaticLinkList[MaxSize];Status InitList(StaticLinkList space){//将一位数组space中各分量链成一备用链表//space[0].cur为头指针,“0”表示空指针。int i;for(i=0;i<MaxSize-1;i++)space[i].cur=i+1;space[MaxSize-1].cur=0;//当前链表为空,最后一个元素cur为0return OK;}/*静态链表的插入操作*//*为了辨明数组中哪些分量未被使用,将所有未被使用以及已经被删除的分量用游标链成一个备用链表,每当插入时,可以从备用链表取得第一个节点作为待插入的新节点*/int Malloc_SLL(StaticLinkList sapce){//若备用链表非空,则返回分配的节点下标,否则返回0int i=space[0].cur;//返回的第一个备用空闲下标if(space[0].cur)//如果分量被使用了(非0)space[0].cur=space[i].cur//下一个分量拿来备用}//根据代码理解图2,可以用来查找空节点。Status ListInsert(StaticLinkList L,int i, ElemType e){int j,k,l;k=MaxSize-1;//k是最后一个元素的下标if(i<1||i>ListLength(L)+1)return error;j=Malloc_SSL(L);//获得空闲分量的下标if(j){L[j].data=e;//把e的数据给空闲分量的datafor(l=1;l<=i-1;l++)k=L[k].cur;//找到第i个元素之前的位置L[j].cur=L[k].cur;//把第i个元素之前的cur赋给新元素curL[k].cur=j;//把新元素的cur改为之前元素原来指向的curreturn OK;}return Error;}/*静态链表的删除操作*/Status ListDelete(StaticLinkList L,int i){int j,k;if(i<1||i>ListLength(L))return Error;k=MaxSize-1;for(j=1;j<=i-1;j++)k=L[k].cur;j=L[k].cur;L[k].cur=L[j].cur;Free_SSL(L,j);return OK;}void Free_SSL(StaticLinkList space,int k){space[k].cur=space[0].cur//第一元素cur赋给要删除分量curspace[0].cur=k;//把要删除的分量下标赋给第一元素的cur}缺点:没有解决连续分配带来表长难以确定的问题。
循环链表
终点空指针改为指向头结点,使单链表形成环的链表,尾指针指向头指针。
双向链表
顾名思义,每个节点前后都有指针域,向前和向后指。
Link:http://blog.csdn.net/zesicus/article/details/37901575(C++线性链表)
0 0
- 数据结构拾遗---线性表
- 整理--数据结构--线性表
- 数据结构(线性表)
- 整理--数据结构--线性表
- 数据结构--顺序线性表
- 数据结构之线性表
- 数据结构-线性链表
- 数据结构-线性表
- 复习 [数据结构] ---- 线性表
- 数据结构---线性表
- 数据结构复习-线性表
- 数据结构之线性表
- 数据结构之线性表
- 线性链表---数据结构
- 数据结构—线性表
- 数据结构 线性表
- 数据结构----线性表
- 数据结构之线性表
- 推荐!国外程序员整理的机器学习资源大全
- android源码中ccache使用及原理简介
- 基础知识--pcre
- mfc孙鑫第十六讲线程同步
- 关于如何轻松地卖出自己的教师资源在线
- 数据结构 线性表
- wine的乱码问题解决
- C++中的 extern "C"
- 小白入门笔记——sql查询200项以后的数据
- 上传图片后显示在页面js
- 驱动开发之 DeviceType
- (42)JS运动之多物体框架--多个div变宽
- 罗伯特·赞米基斯,其中突出的好莱坞董事中
- 解决远程连接mysql错误1130