开发工具与关键技术:数据结构
作者:听民谣的老猫
撰写时间:2020.5.8
线性表
了解顺序表,单链表的删除和插入之前我们先简单了解一下,什么是线性表????
- 归属:线性表是数据结构的一种 。
- 基本运算:求表长,遍历,按编号查找,特征查找,插入,删除,排序。
- (https://baike.baidu.com/item/%E7%BA%BF%E6%80%A7%E8%A1%A8)主要不讲这个,给你们挂个传送门,不用谢。
顺序表,单链表
线性表中常见的就是顺序表,单链表这两位了。在各个计算机语言中都有广泛使用
- 顺序表
顺序表你要简单的理解它的表现形式就是数组了,它是使用一组地址连续的存储单元依次存储数据元素,每个元素都前后有序、整整齐齐。要访问特定元素,可以使用索引访问。(数组的味道),包括理解它的插入删除你都可以带着数组的思维理解。
顺序表的插入
方法代码
插入数据元素insert(int I,object x)
Public void insert (int i,object x)throws exception {…….
forint j = size; j>i:j--){ (size实际元素个数)
ListArray[j]=listArray[j-1];
}
ListArray[i]=x;
Size++;
}
图解
理解:简单点就是你插入哪个位置 就把哪个位置空出来,这个位置后面的数的位置在原来的基础上加一,就和插队一样i就是你要插入的位置 size就是队伍的长度
方法代码为什么有省略号???
就是你要插入的位置不能大于实际元素个数,i的值不能大于size值 这就更好理解了 你插队不可能插在最后面,假如队伍长度是6,难道队插在7???
顺序表的删除
方法代码
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--;
rturn it:
}
图解
顺序表的删除和插入差不多,队伍少了一个元素 那后面的元素就往前补,并且位置加一,同样删除的元素不能大于队伍的长度,和插入同理。
listArray[i]的作用: 备份删除元素,防止数据丢失
- 单链表的删除和插入
单链表的插入
单链表数据域(data) 存储元素的数组数据,指针域(next),单链表不像顺序表,它不需要地址连续的单元来存储线性表
图解:
你插入位置是三你要把你的数据域(data)赋值给你的前面元素的指针域(next),
同样你的指针域(next)获得你后面元素的数据域(data);
用图解来解释就是 你插入的元素在a2后面,a3前面 那么a2的指针域(next)的值变成了你的数据域(data)的值,同时你插入元素的指针域(next)的值也变成了a3的数据域(data)的值。
单链表的删除
理解:
删除就比较简单了 ,假如你删除元素位置2,那么就移除a2,a2消失,那么a1的指针域(next)的值就变成了a3的数据域(data)的值;
这就是顺序表和链表的删除和插入