java_实现链表以及链表的测试类

顺序线性表的设计与实现

一、目的和要求:

(1)正确定义线性表接口;

(2)掌握线性表基本操作实现方法;

(3)能正确分析算法的时间复杂度;

(3)采用顺序线性表或链式线性表解决实际问题。

二、实验原理及内容:

(1)线性表的接口定义;

(2)顺序线性表的定义及基本操作;

(3)使用顺序线性表解决合并两个有序顺序线性表;

(4)使用链式线性表的解决约瑟夫环问题

三、实验步骤:(二选一)

1、顺序线性的定义、基本操作及解决实际问题

(1)顺序线性表的定义;

(2)顺序线性表的基本操作;

(3)合并两个有序顺序线性表

2、链式线性表的定义、基本操作及解决实际问题(自由完成)

(1)链式线性表的定义;

(2)链式线性表的基本操作;

(3)使用链式线性表解决约瑟夫环问题

四、实验过程

1、工程结构如下图所示:

 

 

2、线性表接口定义:ILinarList.java

 

package com.linearlist;
 
/**
 * 接口
 * 线性表的基本操作(添加、删除、修改、查询、清空、判断是否为空,求长度)
 * 泛型,E代表元素类型
 * @authorhhhlh
 * Title:线性表接口
 * Description:线性表的所有方法声明,E表示泛型,即任意类型,基本操作
 * 基本操作有:添加、插入、删除、定位、查询、修改、求长度、清空、判断是否为空
 *
 */
public interface ILinarList<E>{
    boolean add(E item);           //在线性表末尾添加一个元素
    boolean insert(int index,E item);//在线性表第index位置插入元素
    E remove(int index);           //删除线性表第index位置的元素
    int indexOf(E item);           //查询元素E所在的位置,如果不存在,返回位置为0
    E get(int index);          //获得index位置的元素
    E set(int index,E item);   //替换index位置元素为E
    int size();                    //获得线性表的长度,即元素个数
    void clear();              //清空线性表,即删除所有的元素
    boolean isEmpty();             //判断线性表是否为空
}

 

 

 

3、顺序线性表的定义及基本操作实现:SeqList.java

 

import java.lang.reflect.Array;

/*
 * 顺序线性表的定义及基本操作
 * 顺序线性表采用数组实现
 * 顺序线性表的属性有:数组,数组空间大小,元素个数
 */
public class SeqList<E> implements ILinarList<E> {
	// 属性
	private int maxsize; // 数组空间大小
	private E[] data;// 数组,存放元素
	private int size; // 数组元素个数

	// get和set方法
	public int getMaxsize() {
		return maxsize;
	}

	public void setMaxsize(int maxsize) {
		this.maxsize = maxsize;
	}

	public E[] getData() {
		return data;
	}

	public void setData(E[] data) {
		this.data = data;
	}

	public int getSize() {
		return size;
	}

	public void setSize(int size) {
		this.size = size;
	}

	// 构造方法
	@SuppressWarnings("unchecked")
	public SeqList(Class<E> type,int maxsize){
		this.maxsize = maxsize;
		this.data = (E[]) Array.newInstance(type, maxsize);
		size = 0;
	}

	// 针对顺序线性表特意添加判断已满方法、下标是否合法方法、输出所有元素方法
	/**
	 * 判断是否已满,满则返回true,否则返回false
	 */
	public boolean isFull() {
		if (this.size == this.maxsize)
			return true;
		else
			return false;
	}

	/**
	 * 判断位置是否超界,在此下标从0开始,但位置我们规定从1开始
	 * 
	 * @param index即位置,从1开始计算
	 */
	public boolean
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值