线性表部分知识点小结
…………………………………………………………………………………………………
开发工具与关键技术:《数据结构与算法》
作者:林敏静
撰写时间:2020年5月6日
…………………………………………………………………………………………………
前不久结束《数据结构与算法》的网络课堂学习,我根据课堂学习的知识点与课后查找资料拓展知识点写了一篇线性表的部分知识小结,如下:
◇线性表的定义:
·线性表 (linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。数据元素是一个抽象的符号,其具体含义在不同的情况下一般不同。
·在稍复杂的线性表中,一个数据元素可由多个数据项(item)组成,此种情况下常把数据元素称为记录
(record),含有大量记录的线性表又称文件 (file)。
·线性表中的个数n定义为线性表的长度,n=0时称为空表。在非空表中每个数据元素都有一个确定的位置,如用a i表示数据元素,则i称为数据元素a i在线性表中的位序。
·线性表的相邻元素之间存在着序偶关系
◇线性表的特征:
·集合中必存在唯一的一个第一元素。
·集合中必存在唯一的一个最后元素 。
·除最后一个元素之外,均有唯一的后继。
·除第一个元素之外,均有唯一的前驱。
◇线性表的基本运算:
·求表长——求线性表中元素的个数。
·遍历——从左到右(或从右到左)扫描(或读取)表中的各元素。
·按编号查找——找出表中第i个元素。
·按特征查找——按某个特定值查找线性表。
·插入——在第i个位置上(即原第i个元素前)插入一新元素。
·删除——删除原表中的第i个元素。
·排序——按元素某特征值的递增(或递减)排序,重排表中各元素。
◇线性表的存储方式:顺序存储结构和链式存储结构
◇线性表的顺序存储结构:
·特点:元素按顺序排放,地址连续。
·顺序表的插入:插入数据元素方法Insert(int i,Object x)
public void insert(int i, Object x)throws Exception{
……
for(int j=size;j>i;j--){
listArray[j]=listArray[j-1];
}
listArrary[i]=x;
size++;
}
·顺序表的删除:
public Object delete(int i)throws Exception{
……
Object it =listArray[i];//备份所删除的元素
for(int j=i;j<size-1;j++)
listArray[j]=listArray[j+1];
size--;
return it;
}
◇线性表的链式存储:
·特点:不受空间限制,在节点的插入、删除方便,不用大量移动数据。设计链式存储结构时,每个逻辑节点存储单独存储,为了表示逻辑关系,增加指针域。
◎单链表:
·结构:只有一个指向后继结点的指针域。
·特点:逻辑上相邻的数据元素在物理上不一定相邻。
·单链表节点的插入:
首先要有一个定位的过程:
public void index(int i)throws Exception{
if(i==-1)return;
current=head.next;
int j=0;
while((current!=null)&&j<i){
current= current.next;
j++;
}
}
插入:
public void insert(int i,Object obj)throws Exception{
index(i-1);//定位在前一个元素
current。setNext(new Node(obj,current.newxt));
size++;
}
删除:
public Object delete(int i)throws Exception{
index(i-1);//定位
Object obj=current.next.getElement();//取元素
current.setNext(current.next.next);
size--; //元素个数减1
return obj;
}
◎双链表:每个物理节点增加一个指向后继结点的指针域和一个指向前驱结点的指针域。
那么本篇文章就分享到这里啦!若有不足的地方,还望请多多指教!