课本总结:1:线性表
Posted 亿钱君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了课本总结:1:线性表相关的知识,希望对你有一定的参考价值。
线性表
章节导读:
- 最简单且最常用的一种数据结构
1.线性表的逻辑结构
1.1:定义
- 由一组具有相同属性的数据元素构成
- 在一些复杂的的线性表中,每一个数据元素又可以由若干数据项组成(例如:一张表,每一行就是一个记录,每行有多个数据项)
1.2:主要操作
- Initiate()初始化:构造一个空的线性表
- Insert(i ,x)插入:第i个元素之前插入数据元素x
- Delete( i ) 删除:删除第i个元素
- Locate(x)查找定位:如表中存在x,返回x所在位置序号,否则返回Null
- Length()求长度:返回线性表数据元素的个数
- Get(i) 存取;返回线性表的第i个元素,否则返回null
- Traverse()遍历:依次输出线性表的每一个元素
- Copy(c)复制:将线性表复制到线性表C中
- Merge(A,B) 合并:将A和B合并为线性表
2.线性表的顺序存储及运算实现
2.1:线性表的顺序存储结构
1:概念
- 线性表的顺序存储中,前后两个元素在存储空间中是相邻的,且前驱元素一定存储在后继元素前面
- 由于线性表所有数据元素属于同一类型,故每个元素在存储器中占用的空间大小相同
- 因此,在线性表中查找一个元素很方便(例如:第一个存储地址为loc,每个数据元素占d个字节,则线性表第i个元素在计算机中的存储地址为loc + id)
2:利用数组来表示线性表的顺序存储结构的优点
- 数组间的元素地址是连续的
- 数组中所有元素的数据类型相同
3:一维数组
- 地址计算公式:起始地址 + 每个元素所在字节 * 第i个元素
4:二维数组
- 地址计算公式:
2.2 线性表在顺序存储结构下的运算
1:顺序表插入操作
插入步骤
- 先把下标length-1至下标待插入元素的位置依次往后移
- 然后把数据元素插入插入到该表
- 最后把当前数据元素个数+1
public void insert(int index,Student st){
if(index < 0 || index >length){
System.out.println("插入位置出错");
}
if(index+1>maxlength){
System.out.println("线性表已满");
}
// 把length-1至下标index中的数组元素依次往后移
for(int j = length;j>index;j--) {
students[length] = students[length - 1];
students[index] = st;
}
length++;
}
2:顺序表删除操作
删除步骤
- 依次把待删除元素到数组末尾元素往前移动
- 最后把当前数据元素个数-1
public Object delete(int i) {
if (length == 0) {
System.out.println("顺序表已经空,无法删除");
}
if (i < 0 || i > length - 1) {
System.out.println("参数错误");
}
for (int j = i; j < length - 1; j++) {
students[j] = students[j + 1];
}
length--;
return students[i];
}
2.3 线性表存储结构的特点
- 设计方便
- 数据元素的最大个数需预先确定
- 插入、删除运算效率低
- 存储空间不便于扩充
3.线性表的链式存储结构
以上是关于课本总结:1:线性表的主要内容,如果未能解决你的问题,请参考以下文章
2-10-归并扩展的线性单链表-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版
2-5-归并链式存储的单链表-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版