一.顺序表的介绍
1.线性表的定义
线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列…
线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物
理上存储时,通常以数组和链式结构的形式存储。
2.线性表的特点
表中元素的个数是有限的。
表中的元素具有逻辑上的顺序。
表中元素都是数据元素,每个元素都是单个元素。
表中元素的数据类型都相同。
二.顺序表的实现
1.顺序表的定义
线性表的顺序存储又称顺序表。它是用一组地址连续的存储单元依次存储线性表中的数据元从而使得逻辑上相邻的两个元素在物理位置上也相邻。第1个元素存储在线性表的起始位置,
元素的存储位置后面紧接着存储的是第i+1个元素,称i为元素a,在线
顺序表的特点是表中元素的逻辑顺序与其物理顺序相同。
class Seqlist {
public int[] elum;//数组的大小
public int size;//数组的有效元素的个数
public static final int capacity = 10;//数组容量
public Seqlist() {
this.elum = new int[10];//数组开辟的大小为10;
}
数组可以是静态分配的,也可以是动态分配的。在静态分配时,由于数组的大小和空间事先已经固定,一旦空间占满,再加入新的数据就会产生溢出,进而导致程序崩溃。而在动态分配时,存储数组的空间是在程序执行过程中通过动态存储分配语句分配的,一旦数据空间占满,就另外开辟一块更大的存储空间,用以替换原来的存储空间,从而达到扩充存储数组空间的目的,而不需要为线性表一次性地划分所有空间。
2.顺序表的打印
public void disprint() {
for (int i = 0; i < size; i++) {
System.out.println(elum[i] + " ");
}
System.out.println();
}
3.顺序表的尾插
public void SeqlstPushBack(int x) {
if (size == capacity) {
elum = Arrays.copyOf(elum, 2 * elum.length);
}
elum[size] = x;
size++;
}
将第i个元素及其后的所有元素依次往后移动一个位置,腾出一个空位置插入新元素e,顺序表长度增加1,插入成功
``4.顺序表的头插
public void SeqlistPushFront(int x) {
if (size == capacity) {
elum = Arrays.copyOf(elum, 2 * elum.length);
}
for (int i = size - 1; i >= 0; i--) {
elum[i