线性表的顺序实现

       数据结构和算法是程序的灵魂,基本的数据结构分为:线性结构、树、图。线性结构又分为顺序实现的线性结构和链式实现的线性结构。顺序实现的线性结构是一种随机存取结构,适合遍历,寻找元素;而不适合插入和删除操作。其get()、set()的时间复杂度为O(1),而插入和删除的时间复杂度为O(N)。使用java语言实现顺序存储的线性结构代码如下:

线性表的抽象数据类型

package dataStructtion.linear;
/**
 * 线性表的抽象数据类型
 * @author xiucai
 * @param 
 */
public interface LList {
	/**
	 * 判断是否为空
	 * @return
	 */
	public boolean isEmpty();
	/**
	 * 返回线性表长度
	 * @return
	 */
	public int length();
	/**
	 * 返回下标为i的元素(i>=0)
	 * @param i
	 * @return
	 */
	public T get(int i);
	/**
	 * 设置下标为i的元素值为t
	 * @param i
	 * @param t
	 */
	public void set(int i,T t);
	/**
	 * 在下标为i的位置插入元素t
	 * @param i
	 * @param t
	 */
	public void insert(int i,T t);
	/**
	 * 在线性表末尾追加元素t
	 * @param t
	 */
	public void append(T t);
	/**
	 * 移除下标为i的元素
	 * @param i
	 * @return
	 */
	public T remove(int i);
	/**
	 * 移除线性表所有元素
	 */
	public void removeAll();
	/**
	 * 查找,返回首次出现的关键字为key的元素
	 * @param t
	 * @return
	 */
	public T search(T t);
	/**
	 * 判断线性表是否包含元素t
	 * @param t
	 * @return
	 */
	public boolean contain(T t);
}




顺序存储的线性表的实现:

package dataStructtion.linear;
/**
 * 线性表的顺序表示和实现
 * @author xiucai
 * @param 
 */
public class SeqList implements LList{
	private Object[] element;//对象数组
	private int len;//顺序表长度,记录元素个数
	/**
	 * 构造方法,初始化为size长度
	 * @param size
	 */
	public SeqList(int size){
		this.element=new Object[size];
		this.len=0;
	}
	/**
	 * 默认构造长度为64的数组
	 */
	public SeqList(){
		this(64);
	}
	/**
	 * 重写toString方法,用于输出
	 */
	@Override
	public String toString(){
		String string="";
		if(this.len==0)
			return string;
		for(int i=0;i t=(SeqList)obj;
			if(this.len==t.len){
				for(int i=0;i=0&&i=0&&ithis.len?len:i;
		for(int j=this.len-1;j>=i;j--)
			this.element[j+1]=this.element[j];
		this.element[i]=t;
		this.len++;
	}
	/**
	 * 线性表末尾追加元素t
	 */
	@Override
	public void append(T t) {
		// TODO Auto-generated method stub
		insert(this.len, t);
	}
	/**
	 * 移除下表为i的元素,剩下元素依次前移
	 */
	@Override
	public T remove(int i) {
		// TODO Auto-generated method stub
		if(i<0||i>this.len-1)
			return null;
		T t=(T)this.element[i];
		for(int j=i;j seqList=new SeqList();
		System.out.println(seqList.isEmpty());
		System.out.println(seqList.length());
		seqList.insert(0, "aaa");
		System.out.println(seqList);
		seqList.insert(1,"bbb");
		System.out.println(seqList);
		seqList.insert(0,"ccc");
		System.out.println(seqList);
		System.out.println(seqList.length());
//		System.out.println(seqList.get(4));
		seqList.set(0, "ddd");
		System.out.println(seqList);
		seqList.remove(0);
		System.out.println(seqList);
		seqList.append("ccc");
		System.out.println(seqList);
		System.out.println(seqList.contain("aaa"));
		System.out.println(seqList.search("bbb"));
		seqList.removeAll();
		System.out.println(seqList);
	}
}



 

 

你可能感兴趣的:(数据结构)