有关线性表中顺序表的问题


前言

       线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列列。线性表有两种类型顺序表和链表。


提示:以下是本篇文章正文内容,下面案例可供参考

一、顺序表是什么?

       是在计算机内存中以数组形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元,依次存储线性表中的各个元素,使得线性表中在逻辑结构上相邻数据元素存储在相邻的而物理存储单元中,即通过数据元素的物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。

二、顺序表的使用

1.创建一个顺序表的实现类Sequencelist

代码如下(示例):

public class Sequencelist<T> {
//	声明定义两个成员变量 数组和元素个数
	private T[] eles;
	private int N;

//定义一个构造方法实现数组 为Sequencelist创建对象对类进行
	public Sequencelist(int capacity) {
//	初始化数组 让类里的eles等于new出来又强转为T类型的Object类型的数组
//	其中capacity是传入的数组的容量   就是给定数组eles的元素容量/个数
		this.eles = (T[]) new Object[capacity];
//	初始化数组长度
		this.N = 0;
	}

//将一个线性表置为空表
	public void clear() {
		this.N = 0;
	}

//判断当前的线性表是否为空表
	public boolean isEmpty() {
		return N == 0;
	}

//获取线性表的长度
	public int length() {
		return N;
	}

//获取线性表指定位置的元素
//因为这个是顺序表是以数组的方式存放元素,因此直接用数组名称+索引据可以获得指定位置的元素
	public T get(int i) {
		return eles[i];
	}

//像线性表中添加元素,  像顺序表的最后添加一位元素
	public void insert(T t) {
		eles[N + 1] = t;
	}

//在顺序表的第i个元素处插入元素
	public void insert(int i, T t) {
		// 先把i索引处的元素及其后面的元素先后
		// 使用for循环将上述元素达到向后移一位的效果
		for (int index = N; index > i; index--) {
			eles[index] = eles[index - 1];
		}
		// 再把t元素放到i索引处即可
		eles[i] = t;
		// 记录此时顺序表中的元素个数
		N++;
	}

//删除指定位置i处的元素,并返回删除的元素
	public T remove(int i) {
		// 记录索引i处的值
		T current = eles[i];
		// 索引i后面的元素全部向前移一位即可 使用for循环
		for (int index = i; index < N - 1; index++) {
			eles[index] = eles[index + 1];
		}
		// 记录此时顺序表中的元素个数
		N--;
		return current;
	}

//获取元素在顺序表中首次出现的序列号/索引 使用for循环便利顺序表嵌套if语句判断
//并且返回该元素的索引
	public int indexOf(T t) {
		for (int i = 0; i < N; i++) {
			if (eles[i].equals(t)) {
				return i;
			}
		}
		return -1;
	}

}

2.读入数据

代码如下(示例):

public class SequencelistTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Sequencelist<String> sl=new Sequencelist(10);
		
		//测试插入
		sl.insert("姚明");
		sl.insert("张三");
		sl.insert("里斯");
		sl.insert(1, "宙斯");
		
		//测试删除
		sl.remove(2);
		//测试获取指定位置的元素
		sl.get(1);
		//判断元素是否在顺序表中并获得他的索引
		int mun=sl.indexOf("宙斯");
		System.out.println("元素"+mun);
		//清除所有元素
		sl.clear();
		//判断栓需表是否为空
		boolean result=sl.isEmpty();
		System.out.println("顺序表为:"+result);
	}

}

该处使用的test测试类用于测试实现类是否能够正确执行定义的有关功能


总结

      顺序表其实就是线性表中的一种类型,用于存储有限序列的数据组,并且顺序表单的容量自定义capacity。但是早实际操作过程中顺序表的容量往往由于执行增删改查操作后,出现容量不足又或者是容量过于臃肿,因此会使用迭代器来控制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值