色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > Java數(shù)據(jù)結(jié)構(gòu)——線性表

Java數(shù)據(jù)結(jié)構(gòu)——線性表 時間:2019-07-10      來源:濟(jì)南中心,吳老師

Java數(shù)據(jù)結(jié)構(gòu)——線性表的順序存儲實現(xiàn)

一、描述 

線性結(jié)構(gòu)特點: 

(1)存在唯一的一個被稱作“第一個”的數(shù)據(jù)元素 

(2)存在唯一的一個被稱作“最后一個”的數(shù)據(jù)元素 

(3)除第一個之外,集合中的每個數(shù)據(jù)元素均只有一個前驅(qū) 

(4)除最后一個之外,集合中的每個數(shù)據(jù)元素均只有一個后繼

線性表:是n個數(shù)據(jù)元素的有限序列。常用的兩種存儲結(jié)構(gòu)為:線性表的順序存儲結(jié)構(gòu)和線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)。

線性表的順序表示:指的是用一組地址連續(xù)的存儲單元依次存儲線性表的數(shù)據(jù)元素。

本篇主要講線性表的順序存儲。

二、源碼 

2.1 SequenceList.java

package com.yds.list;

import java.util.Arrays;

public class SequenceList<T>{

    //默認(rèn)長度

    private int DEFAULT_SIZE = 2;

    //定義一個數(shù)組用于保存線性表的長度

    private Object[] elementData;

    //用于保存數(shù)組長度

    private int capacity;

    //保存順序表中當(dāng)前元素的個數(shù)

    private int size = 0;

    /**

     * 構(gòu)造一個默認(rèn)長度的空線性表

     */

    public SequenceList(){

        capacity = DEFAULT_SIZE;

        elementData = new Object[capacity];

    }

    /**

     * 用一個初始化元素來創(chuàng)建線性表

     * @param element 初始化元素

     */

    public SequenceList(T element){

        this();

        elementData[0] = element;

        size++;

    }

    /**

     * 用一個元素和指定長度來創(chuàng)建線性表

     * @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("數(shù)組越界異常");

        }

        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  得到的結(jié)果

     */

    public T get(int index){

        if(index<0||index>size)

            throw new IndexOutOfBoundsException("數(shù)組越界異常");

        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為線性表元素個數(shù)

     * @return 

     */

    public T priorElem(int index){

        if(index>0&&index<size+1)

            return (T)elementData[index-1];

        else {

            throw new IndexOutOfBoundsException("數(shù)組越界異常");

        }

    }

    /**

     * 刪除指定位置的元素

     * @param index

     */

    public void delete(int index){

        if(index<0||index>size-1){

            throw new IndexOutOfBoundsException("數(shù)組越界異常");

        }else{

            //把數(shù)組前移一位

            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("數(shù)組越界異常");

        }

    }

    /**

     * 確保數(shù)組所需長度大于數(shù)組原有長度

     * @param mCapacity 數(shù)組所需長度

     */

    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));

        }

    }

3 結(jié)果截圖

上一篇:STM32F407之SD卡讀數(shù)據(jù)介紹

下一篇:STM32之外設(shè)定時器

熱點文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號-5京公海網(wǎng)安備11010802025203號

回到頂部

色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 欧美激情综合色| 日韩精品极品在线观看播放免费视频 | 91在线免费视频| 国产精品久久77777| 国内久久久精品| 亚洲日本成人女熟在线观看 | 国产午夜精品久久久| 精品调教chinesegay| 亚洲欧美变态国产另类| 亚洲少妇中文在线| 一区二区三欧美| 日韩在线观看高清| 欧美xxxx做受欧美.88| 欧美人与物videos| 亚洲毛片一区二区| 国产一区二区三区在线看 | 26uuu另类亚洲欧美日本一| 亚洲精品视频免费在线观看| 亚洲美女动态图120秒| 在线视频一区二区| 欧美成人午夜视频| 午夜精品久久久久久久99热| 欧美成人精品不卡视频在线观看| 国产小视频国产精品| 97精品视频在线观看| 国产成人一区二区| 欧美激情第1页| 日韩中文字幕视频| 激情av一区二区| 91国产视频在线| 国产精品一区久久| 精品中文字幕久久久久久| www.国产一区| 久久久欧美一区二区| 国产精品久久久久久中文字| 日韩精品一二三四区| 久久精品夜夜夜夜夜久久| 国内偷自视频区视频综合| 国产日韩欧美中文| 国产亚洲综合久久| 欧美性黄网官网|