【线性表的顺序顺序结构】

顺序表

public class SqListClass <E>{
	final int initcapacity = 10;
	public E[] data;
	public int size;
	private int capacity;
	
@SuppressWarnings("unchecked")
public SqListClass() {     //构造方法 实现data和length初始化
	// TODO Auto-generated constructor stub
	data = (E[]) new Object[initcapacity];
	capacity = initcapacity;
	size = 0;
}
@SuppressWarnings("unchecked")
private void updatacapacity(int newcapacity) {   //改变数组容量newcapacity
	E[] newdata = (E[]) new Object[newcapacity];
	for(int i = 0;i<size;i++)
		newdata[i] = data[i];
	capacity = newcapacity;
	data = newdata;
}
public void CreatList(E[] a) {       //整体建立顺序表
	size = 0;
	for(int i=0;i<a.length;i++) {
		if(size==capacity) {
			updatacapacity(size*2);       //当顺序表满时扩大容量
		data[size] = a[i];
		size++;
		}
	}
}
public void Add(E e) {          //末尾添加元素
	if(size == capacity)
		updatacapacity(2*size);   //当顺序表满时扩大容量
	data[size] = e;
	size++;                 //长度增长1
}

public int size() {          //求线性表长度
	return size;
}
	
public void SetSize(int nlen) {   //设置线性表长度
	if(nlen<0 || nlen>size)
		throw new IllegalArgumentException("设置长度:n不在有效范围内");
	size = nlen;
}
public E GetElem(int i,E e) {  //返回线性表中序号为i的元素
	if(i<0 || i>size-1)
		throw new IllegalArgumentException("查找:位置i不在有效范围内");
	return (E)data[i];
}
public void SetElem(int i,E e) { //设置线性表中序号为i的元素e
	if(i<0 || i>size-1)
		throw new IllegalArgumentException("设置长度:n不在有效范围内");
	data[i] = e;
}
public int GetNo(E e) {    //查找到第一个值为e的元素的序号
	int i = 0;
	while(i<size && !data[i].equals(e))
		i++;                       //查找元素e
	if(i>=size) 
		return -1;                 //未找到返回-1
	else
		return i;                  //找到返回序号
}
public void swap(int i,int j) {    //将线性表中序号为i , j 的元素交换位置
	E tmp = data[i];
	data[i] = data[j];
	data[j] = tmp;
}
public void Insert(int i,E e) {    //在线性表序号为i的位置上插入元素e
		if(i<0 || i>size) {
			throw new IllegalArgumentException("插入:位置i不在有效范围内");
		}
		if(size == capacity)            //表满扩容
			updatacapacity(2*size);
		for(int j=size;j>i;j--)         //将data[i]后面的元素到data[i]都后移一个位置
			data[j]=data[j-1];
		data[i] = e;                    //在位置i上插入元素e
		size++;                          //顺序表长度增加1
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值