您的位置 首页 解答

Java数据结构的线性表是怎样的

Java数据结构的线性表是怎样的-线性表:是n个数据元素的有限序列。常用的两种存储结构为:线性表的顺序存储结构和线性表的链式存储结构。

Java数据结构——线性表的次序存储完成

一、描绘

线性结构特色:

(1)存在仅有的一个被称作“第一个”的数据元素

(2)存在仅有的一个被称作“最终一个”的数据元素

(3)除第一个之外,调集中的每个数据元素均只要一个前驱

(4)除最终一个之外,调集中的每个数据元素均只要一个后继

线性表:是n个数据元素的有限序列。常用的两种存储结构为:线性表的次序存储结构和线性表的链式存储结构。

Java数据结构的线性表是怎样的

线性表的次序表明:指的是用一组地址接连的存储单元顺次存储线性表的数据元素。

本篇主要讲线性表的次序存储。 二、源码

2.1 SequenceList.java

package com.yds.list;

import java.util.Arrays;

public class SequenceList《T》{

//默许长度

private int DEFAULT_SIZE = 2;

//界说一个数组用于保存线性表的长度

private Object[] elementData;

//用于保存数组长度

private int capacity;

//保存次序表中当时元素的个数

private int size = 0;

/**

* 结构一个默许长度的空线性表

*/

public SequenceList(){

capacity = DEFAULT_SIZE;

elementData = new Object[capacity];

}

/**

* 用一个初始化元从来创立线性表

* @param element 初始化元素

*/

public SequenceList(T element){

this();

elementData[0] = element;

size++;

}

/**

* 用一个元素和指定长度来创立线性表

* @param element 元素

* @param initSize 指定长度

*/

public SequenceList(T element,int initSize){

capacity = 1;

if(capacity《initSize){

capacity = initSize +2;

}

elementData = new Object[capacity];

elementData[0] = element;

size++;

}

/**

* 向次序表中刺进元素

* @param element 待刺进的元素

* @param index 待刺进的方位

*/

public void insert(T element,int index){

if(index《0||index》size){

throw new IndexOutOfBoundsExcepTIon(“数组越界反常”);

}

ensureCapacity(size+1);

//把index今后的元素都后移一位

System.arraycopy(elementData, index, elementData, index+1, size-index);

elementData[index] = element;

size++;

}

/**

* 表长

* @return

*/

public int length(){

return size;

}

/**

* 向表中增加元素

* @param element

*/

public void add(T element){

insert(element, size);

}

/**

* 得到线性表存储的目标

* @param index 取得的方位

* @return 得到的成果

*/

public T get(int index){

if(index《0||index》size)

throw new IndexOutOfBoundsExcepTIon(“数组越界反常”);

return (T)elementData[index];

}

/**

* 判别线性表是否为空

* @return

*/

public boolean isEmpty(){

return size==0;

}

/**

* 清空线性表

*/

public void clear(){

Arrays.fill(elementData, null);

size = 0;

}

/**

* 获取指定方位的前一个元素

* @param index 线性表方位,若是取线性表最终一个元素,有必要index = size,

* size为线性表元素个数

* @return

*/

public T priorElem(int index){

if(index》0&&index《size+1)

return (T)elementData[index-1];

else {

throw new IndexOutOfBoundsExcepTIon(“数组越界反常”);

}

}

/**

* 删去指定方位的元素

* @param index

*/

public void delete(int index){

if(index《0||index》size-1){

throw new IndexOutOfBoundsExcepTIon(“数组越界反常”);

}else{

//把数组前移一位

System.arraycopy(elementData, index+1, elementData, index, size-index-1);

size–;

//清空最终一个元素

elementData[size]=null;

}

}

/**

* 获取指定线性表方位的后一个元素

* @param index 线性表方位,若是取线性表第0个元素,有必要index=-1

* @return

*/

public T nextElem(int index){

if (index==-1) {

return (T)elementData[0];

}

else if (index《size-1&&index》-1) {

return (T)elementData[index+1];

}else{

throw new IndexOutOfBoundsException(“数组越界反常”);

}

}

/**

* 保证数组所需长度大于数组原有长度

* @param mCapacity 数组所需长度

*/

private void ensureCapacity(int mCapacity){

if(mCapacity》capacity){

capacity=mCapacity+2;

// System.out.println(“capacity:”+capacity);

elementData = Arrays.copyOf(elementData, capacity);

}

}

}

2.2 JavaMain.java

package com.yds.list;

public class JavaMain {

public static void main(String[] args) {

// TODO Auto-generated method stub

SequenceList《String》 list = new SequenceList《String》();

System.out.println(“isEmpty:”+list.isEmpty());

String La[] = {

“3”

};

for (int i = 0; i 《 La.length; i++) {

list.add(La[i]);

}

System.out.println(“isEmpty:”+list.isEmpty());

for (int i = 0; i 《 La.length; i++) {

System.out.println(list.get(i));

}

System.out.println(“length:”+list.length());

System.out.println(“priorElem:”+list.priorElem(1));

list.insert(“7”, 0);

System.out.println(“——————–”);

for (int i = 0; i 《 list.length(); i++) {

System.out.println(list.get(i));

}

System.out.println(“length:”+list.length());

System.out.println(“——————–”);

System.out.println(“priorElem:”+list.priorElem(1));

System.out.println(“nextElem:”+list.nextElem(0));

System.out.println(“——————–”);

list.delete(1);

for (int i = 0; i 《 list.length(); i++) {

System.out.println(list.get(i));

}

list.clear();

System.out.println(“isEmpty:”+list.isEmpty());

System.out.println(“———-SequenceList(T element)———-”);

SequenceList《String》 list1 = new SequenceList《String》(“5”);

for (int i = 0; i 《 La.length; i++) {

list1.add(La[i]);

}

for (int i = 0; i 《 list1.length(); i++) {

System.out.println(list1.get(i));

}

System.out.println(“——-SequenceList(T element,int initSize)——–”);

SequenceList《String》 list2 = new SequenceList《String》(“5”,3);

for (int i = 0; i 《 La.length; i++) {

list2.add(La[i]);

}

for (int i = 0; i 《 list2.length(); i++) {

System.out.println(list2.get(i));

}

}

责任编辑:ct

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/96749.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部