Java3:順序表的操作

順序表常見操作有插入、刪除、查找、修改。
一、插入:
1.插入有頭插、尾插、任意位置插入。在插入時要注意下標(biāo)的取值在順序表長度范圍內(nèi)。所以最好在插入之前進(jìn)行擴(kuò)容操作。
2.在頭插時要注意先將原數(shù)組的元素從后往前依次向后移動。因?yàn)槿绻麖那巴箝_始移動的話,會造成后一個元素被前一個元素覆蓋,而丟失數(shù)據(jù)且造成重復(fù)。arr[i+1]=arr[i],注意此處i的意思是要移動的元素的下標(biāo)。
3.任意位置插入與頭插類似,從后往前(要插入的位置元素下標(biāo))依次向后移動,再將數(shù)據(jù)插入
二.刪除
1.刪除有頭刪、尾刪、任意位置刪除,要注意刪除前,原順序表是否為空的異常情況。
2.頭刪與頭插相反,是從前往后依次向前移動,即后一個元素arr[i+1]覆蓋前一個元素arr[i].arr[i]=arr[i+1]
3.不論查找還是刪除,在確定循環(huán)語句的初始值和條件時都要仔細(xì)思考可取范圍
三.查找和修改
查找和修改要注意目標(biāo)位置的下標(biāo)不能越界
四.擴(kuò)容
在java語言中,擴(kuò)容一般擴(kuò)為原來的1.5倍,是一種習(xí)慣的規(guī)范,不是死規(guī)則。
最后,附上完整代碼,包括初始化、插入、刪除、查找、修改、擴(kuò)容、刪除順序表的相同元素。

中寧ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

import java.util.Arrays;
public class SeqList1{
    private int[] array;
    private int size;
    //1.初始化,構(gòu)造函數(shù)
    public  SeqList1(){
        array=new int[11];
        size=0;
    }
    //2.頭插
    public void pushFront(int element){
        ensureCapacity();
        for(int i=size-1;i>=0;i--){// i代表的數(shù)據(jù)元素的下標(biāo),從后往前移動
            array[i+1]=array[i];
        }
        array[0]=element;
        size++;
    }
    //3.尾插
    public void pushBack(int element){
        ensureCapacity();
        array[size++]=element;
    }

    //4.中間插 
    public void insert(int index,int element){
        if(index<0||index>size){
            System.out.println("下標(biāo)異常,不能插入");
        }
        ensureCapacity();
        for(int i=size;i>=index;i--){
            array[i+1]=array[i];
        }
        array[index]=element;
        size++;
    }

    //5.頭刪
    public void popFront(){
        if(size==0){
        System.out.println("空表");
        }
        for(int i=0;i<size;i++){
            array[i]=array[i+1];
        }
        size--;
    }

    //6.尾刪
    public void popBack(){
        if(size==0){
    System.out.println("空表");
        }
    size--;}
    //7.中間刪
    public void erase(int index){
        if(index<0||index>=size){
            System.out.println("下標(biāo)異常,不能刪除");
        }
        for(int i=index;i<size;i++){
            array[i]=array[i+1];
        }
        size--;
    }

    //8.查找
    public int indexOf(int element){
        for(int i=0;i<size;i++){
            if(array[i]==element){
                return i;
            }
        }
            return -1;
    }
    //9.根據(jù)下標(biāo),獲取元素
    public int get(int index){
    if(index<0||index>=size){
        System.out.println("下標(biāo)異常");
    }
    for(int i=0;i<size;i++){
        if(array[i]==array[index]){
            return array[i];
        }
    }
            return -1;
}

    //10.給定下標(biāo),修改元素的值
    public void set(int index,int element){
        for(int i=0;i<size;i++){
            if(i==index){
                array[i]=element;
            }
        }
    }
    //11.顯示當(dāng)前表中元素長度
    public int size(){
        return size;
    }
    //12.判斷表是否為空
    public boolean isEmpty(){
        return size==0;
    }
    //13.查詢表的容量
    public int capacity(){
        return array.length;
    }
    //14.打印顯示表中已有元素
    public String toString(){
        return Arrays.toString(
        Arrays.copyOf(array,size));
    }
    //15.刪除表中的一個元素
    public void remove(int element){
        int index=indexOf(element);
        if(index!=-1){
            erase(index);
        }
    }
    //16.刪除表中相同元素
    public void removeAll(int element){
        int j=0;
        for(int i=0;i<size;i++){
            if(array[i]!=element){
                array[j++]=array[i];
            }
        }
        size=j;
    }
    //17.擴(kuò)容
    private void ensureCapacity(){
        if(size<array.length){
            return ;
        }
        //申請空間
        int newCapacity=array.length+array.length/2;
        int[] newArray=new int[newCapacity];
       //搬家
       for(int i=0;i<array.length;i++){
           newArray[i]=array[i];
       }
       //官宣
       this.array=newArray;
}
    public static void test1(String [] args){
        SeqList1 sq = new SeqList1();
        //[]
        System.out.println(sq.toString());
        //頭插1 2 3
        sq.pushFront(1);
        sq.pushFront(2);
        sq.pushFront(3);
        System.out.println(sq.toString());
        //尾插10,20,30
        sq.pushBack(10);
        sq.pushBack(20);
        sq.pushBack(30);
        System.out.println(sq.toString());
        //1,2,3,10,20,30
        sq.insert(2,15);
        sq.insert(4,28);
        System.out.println(sq.toString());
        //當(dāng)前容量
        System.out.println(sq.capacity());
        //尾插

        sq.pushBack(10);
        sq.pushBack(2000);
        sq.pushBack(3000);
        // sq.pushBack(4000);
        sq.pushBack(5000);
        sq.pushBack(6000);
        System.out.println("當(dāng)前容量為"+ sq.capacity());
        //頭刪
        sq.popFront();
        //尾刪
        sq.popBack();
        //中間刪
        sq.erase(3);
        System.out.println(sq.toString());
    }
        public static void test2(String [] args){
            SeqList1 s =new SeqList1();
        s.pushBack(1);
        s.pushBack(2);
        s.pushBack(3);
        s.pushBack(4);
        s.pushBack(1);
        s.pushBack(2);
        s.pushBack(3);
        s.pushBack(4);
        // [ 1, 2, 3, 4, 1, 2, 3, 4 ]
        System.out.println(s.toString());
        s.remove(4);
        // [ 1, 2, 3,  1, 2, 3, 4 ]
        System.out.println(s.toString());
        s.removeAll(4);
        // [ 1, 2, 3,  1, 2, 3,  ]
        System.out.println(s.toString());
        }
        public static void main(String[] args){
            test1(args);
            test2(args);
        }
    }

名稱欄目:Java3:順序表的操作
分享網(wǎng)址:http://muchs.cn/article42/pidohc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、商城網(wǎng)站、虛擬主機(jī)、外貿(mào)建站、定制網(wǎng)站、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化