线性表的java实现(数组,链表)



package com.nobody.list;

/** ADT线性表接口
 *  线性表的元素位置从1开始
 */  
public interface ListInterface{

	/** Task:往线性表的末尾插入新元素
	 *  @param newEntry 做为新元素插入的对象
	 *  @return 如果插入成功则返回true,否则返回false
	 */
	public boolean add(Object newEntry);

	/** Task:往线性表的指定位置插入一个新元素,原本位于该位置及之后的元素各向后移动一个位置,线性表的大小增1.
	 *  @param newPosition 线性表新元素插入的位置,1 <= newPosition && getLength()+1 >= newPosition
	 *  @param newEntry 作为新元素插入的对象
	 *  @return 如果插入成功则返回true,否则返回false
	 */
	public boolean add(int newPosition, Object newEntry);

	/** Task:从线性表中删除指定位置的元素,原本位于该位置之后的元素各向前移动一个位置,线性表的大小减1
	 *  @param givenPosition 删除元素的指定位置,1 <= givenPosition && getLength() >= givenPosition 
	 *  @return 如果删除成功则返回被删除的元素,否则返回 null
	 */
	public Object remove(int givenPosition);

	/** Task: 从线性表中删除所有元素
	 */
	public void clear();
	
	/** Task: 从线性表中替换指定位置的元素
	 *  @param givenPosition 元素替换的指定位置,1 <= givenPosition && getLength() >= givenPosition
	 *  @param newEntry 用以替换givenPosition元素的对象
	 *  @return 如果替换成功则返回true,如果线性表为空或者givenPosition位置非法则返回false
	 */
	public boolean replace(int givenPosition, Object newEntry);

	/** Task: 从线性表的指定位置获取元素(对象的引用)
	 *  @param givenPosition 元素的索引位置,1 <= givenPosition && getLength() >= givenPosition
	 *  @return 如果索引成功则返回元素,否则返回null
	 */
	public Object getEntry(int givenPosition);

	/** Task: 判断线性表中是否含有给定的元素
	 *  @param anEntry 表示待查元素的对象
	 *  @return 如果线性表中存在anEntry则返回true,否则返回false 
	 */
	public boolean contains(Object anEntry);

	/** Task: 获取线性表的长度
	 *  @return 返回线性表当前所含元素的个数
	 */
	public int getLength();

	/** Task: 判断线性表是否为空
	 *  @return 如果为空则返回true,否则返回false
	 */
	public boolean isEmpty();

	/** Task: 判断线性表是否已满
	 *  @return 如果线性表已满则返回true,否则返回false
	 */
	public boolean isFull();

	/** Task: 按元素在线性表中的顺序,显示全部的元素
	 */
	public void display();
}


package com.nobody.list.imp;

import com.nobody.list.ListInterface; 

/** 使用定长数组实现ADT线性表 */ 

public class AList implements ListInterface{ 
	private Object[] entry;			 //线性表元素数组 
	private int length;			 //线性表当前元素的个数	
	private static final int MAX_SIZE = 50;	 //线性表的最大长度
	
	public AList(){
		entry = new Object[MAX_SIZE];
		length = 0;
	}

	public AList(int maxSize){
		entry = new Object[maxSize];
		length = 0;
	}

	public boolean add(Object newEntry){		//在线性表末尾插入对象
		boolean result = false;
		if(!isFull()){
			entry[this.length] = newEntry;
			this.length++;
			result = true;
		}
		return result;
	}

	public boolean add(int newPosition, Object newEntry){	//在指定位置插入对象
		boolean result = false;
		if(!isFull() && newPosition >= 1 && newPosition <= this.length + 1){
			makeRoom(newPosition);
			entry[newPosition - 1] = newEntry;
			this.length++;
			result = true;
		}
		return result;
	}

	public Object remove(int givenPosition){	//删除指定位置对象,并返回该对象
		Object result = null;
		if(givenPosition >= 1 && givenPosition <= this.length){
			result = entry[givenPosition - 1];
			removeGap(givenPosition);
			this.length--;
		}
		return result;
	}

	public void clear(){				//清空线性表
		this.length = 0;
	}

	public boolean replace(int givenPosition, Object newEntry){	//替换指定位置对象
		boolean result = false;
		if(givenPosition >= 1 && givenPosition <= this.length){
			entry[givenPosition - 1] = newEntry;
			result = true;
		}
		return result;
	}

	public Object getEntry(int givenPosition){		//获取指定位置对象
		Object result = null;
		if(givenPosition >= 1 && givenPosition <= this.length){
			result = entry[givenPosition - 1];
		}
		return r
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值