顺序表的简单实现(Java)

本文详细介绍了如何使用Java语言实现顺序表数据结构,包括初始化、判断空与满、获取长度、清空、添加元素、删除元素、修改元素、查找元素、获取元素索引等操作。同时提供了遍历输出线性表和获取特定元素的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

采用Java实现数据结构中的顺序表

/**
 *Apr 15, 2013
 *Copyright(c)JackWang
 *All rights reserve
 *@Author <a href="mailto:wangchengjack@163.com">JackWang</a>
*/
package com.example.list;


/**
 * 顺序表的实现
 * @author Administrator
 *
 */
public class MySeqList {
	private Object[] obj; //存储元素,初始长度为10
	private int len;   //记录顺序表的长度
	private final int maxSize = 10;
	
	/**
	 * 初始化线性表
	 */
	public MySeqList() {
		this.obj = new Object[10];
		this.len = 0;
		this.clear();
	}
	/**
	 * 判断线性表是否为空
	 * @return 空返回true
	 */
	public boolean isEmpty(){
		if (len == 0) {
			return true;
		}
		return false;
	} 
	/**
	 * 判断线性表是否已满
	 * @return 满返回 true
	 */
	public boolean isFull(){
		if (len == maxSize) {
			return true;
		}
		return false;
	}
	
	/**
	 * 返回线性表的长度
	 * @return 线性表的长度
	 */
	public int length(){
		return len;
	}
	
	/**
	 * 清空线性表
	 */
	public void clear() {
		for (int i = 0; i < obj.length; i++) {
			obj[i] = null;
		}
	}	
	/**
	 * 添加元素
	 * @param i  要添加元素的脚标
	 * @param o  要添加的元素
	 */
	public void insert(int i,Object o){
		if (i <1) {
			throw new RuntimeException("脚标不规范!");
		}
		if (obj[i-1] != null) {
			for(int j = len-1;j>i;j--){
				obj[j+1] = obj[j];
			}
			obj[i] = o;
			len++;
			return;
		}else {
			obj[i-1] = o;
			len++;
			return;
		}
		
	}
	/**
	 * 删除元素
	 * @param i 要删除的元素索引
	 */
	public void delete(int i){
		if (i > len || i <1) {
			throw new RuntimeException("脚标不规范!");
		}
		for(int j = i;j<len-1;j++){
			obj[i-1]=obj[i];	
		}
		obj[len-1] = null;
		len--;
	}
	/**
	 * 修改元素
	 * @param i  要修改元素的脚标
	 * @param newObj 要修改的值
	 */
	public void update(int i,Object newObj){
		if (i > len || i <1) {
			throw new RuntimeException("脚标不规范!");
		}
		obj[i-1] = newObj;
	}
	/**
	 * 查找元素
	 * @param o  要查找的元素
	 * @return   查到元素的索引
	 */
	public int find(Object o){
		for (int i = 0; i < obj.length; i++) {
			if(o.equals(obj[i])){
				return i+1;
			}
		}
		return -1;
	}
	/**
	 * 当前元素的前一个元素的索引
	 */
	public int previous(int i){
		if (i > len || i <1) {
			throw new RuntimeException("脚标不规范!");
		}
		if( i== 1){
			return len;
		}
		return i-1;
	}
	/**
	 * 当前元素的后一个元素的索引
	 */
	public int next(int i){
		if (i > len || i <1) {
			throw new RuntimeException("脚标不规范!");
		}
		if( i == len){
			return 1;
		}
		return i+1;
	}
	/**
	 * 遍历输出线性表
	 * @return 
	 */
	public void print(){
		for (int i = 0; i < obj.length; i++) {
			System.out.println(obj[i]+" ");
		}
		System.out.println();
	}
	/**
	 * 得到特定脚标的元素
	 * @param i
	 * @return
	 */
	public Object get(int i){
		if (i > len || i <1) {
			throw new RuntimeException("脚标不规范!");
		}
		return obj[i-1];
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值