大話數(shù)據(jù)結(jié)構(gòu) - 線性表

代碼GitHub地址


線性表

  • 線性表需要相同的數(shù)據(jù)類型
  • 線性表的處理方式都是先取代,后目的。比如刪除鏈?zhǔn)骄€性表的某個(gè)節(jié)點(diǎn)的流程,先取代delete point使它的前驅(qū)節(jié)點(diǎn)指向它的后繼節(jié)點(diǎn),這樣就完成了取代。然后再free()掉這個(gè)節(jié)點(diǎn),這樣就達(dá)到了目的。再比如加入某個(gè)節(jié)點(diǎn),先使add point指向add index要加入處的后繼節(jié)點(diǎn),這即取代。然后再使add index的前驅(qū)節(jié)點(diǎn)指向add point。

解題步驟:

  1. 先考慮特殊情況,邊緣值
  2. 進(jìn)入退出循環(huán)時(shí)需要找準(zhǔn)條件,考慮清楚退出循環(huán)時(shí)所需要的變量的終值是多少,方便使用
  3. 審視全局,帶正確的值判斷是否AC

線性表的操作

線性表

public class ArrayList_ {

    /**
     * 線性表最大容量
     */
    private static final int MAX_SIZE = 100;
    /**
     * 線性表value容器
     */
    public int[] arraylist = new int[MAX_SIZE];
    /**
     * 線性表當(dāng)前長(zhǎng)度
     */
    public int arrayListLength;

}

獲取鏈表中的第index個(gè)元素

/**
 * 獲取鏈表中的第index個(gè)元素
 *
 * @param arrayList_
 * @param index
 * @return
 */
public static int get(ArrayList_ arrayList_, int index) {
    if (arrayList_.arrayListLength == 0 || index > MAX_SIZE || index < 1) {
        return 0;
    }
    return arrayList_.arraylist[index - 1];
}

在第index的位置插入元素value

/**
 * 在第index的位置插入元素value
 *
 * @param arrayList_
 * @param index
 * @param value
 * @return
 */
public static int insert(ArrayList_ arrayList_, int index, int value) {
    if (arrayList_.arrayListLength >= MAX_SIZE || index > arrayList_.arrayListLength || index < 1) {
        return 0;
    }
    if (index <= arrayList_.arrayListLength) {
        // 插入到表已有元素中
        // 從線性表的最后一個(gè)元素到當(dāng)前插入擠出的元素,依次向后移一位
        for (int i = arrayList_.arrayListLength - 1; i >= index - 1; i--) {
            arrayList_.arraylist[i + 1] = arrayList_.arraylist[i];
        }
    }
    
    arrayList_.arraylist[index - 1] = value;
    arrayList_.arrayListLength++;
    return 1;
}

刪除單鏈表第index個(gè)的元素

/**
 * 刪除單鏈表第index個(gè)的元素
 *
 * @param arrayList_
 * @param index
 * @return 返回刪除的元素的value
 */
public static int remove(ArrayList_ arrayList_, int index) {
    if (index > arrayList_.arrayListLength || index < 1 || arrayList_.arrayListLength == 0) {
        return 0;
    }
    // 刪除的元素不在線性表尾
    if (index < arrayList_.arrayListLength) {
        // 后續(xù)的值往前頂
        for (int i = index - 1; i < arrayList_.arrayListLength - 1; i++) {
            arrayList_.arraylist[i] = arrayList_.arraylist[i + 1];
        }
    }
    arrayList_.arrayListLength--;
    return 1;
}

很基礎(chǔ),沒什么難度,全程閉著眼寫,嘿嘿

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 代碼GitHub地址 鏈表概述 數(shù)組和鏈表都是線性存儲(chǔ)結(jié)構(gòu)的基礎(chǔ)實(shí)現(xiàn),棧和隊(duì)列都是線性存儲(chǔ)結(jié)構(gòu)的應(yīng)用 數(shù)組優(yōu)缺點(diǎn) ...
    HikariCP閱讀 1,588評(píng)論 0 0
  • 1.線性表的定義 線性表:零個(gè)或多個(gè)數(shù)據(jù)元素的有限序列序列:也就是說元素之間是有順序的,若元素存在多個(gè),則第一個(gè)元...
    e40c669177be閱讀 2,204評(píng)論 6 15
  • 轉(zhuǎn)自:http://blog.csdn.net/oreo_go/article/details/52116214 ...
    YYT1992閱讀 1,279評(píng)論 0 4
  • 從數(shù)據(jù)的邏輯結(jié)構(gòu)來分,數(shù)據(jù)元素之間存在的關(guān)聯(lián)關(guān)系被稱為數(shù)據(jù)的邏輯結(jié)構(gòu)。歸納起來,應(yīng)用程序中的數(shù)據(jù)大致喲如下四種基本...
    Jack921閱讀 1,171評(píng)論 0 2
  • 第二章 緩慢思維VS敏捷思維 思維在不停的跳躍,要想控制這條永不停歇的思維河流,讓它為實(shí)現(xiàn)自己的目標(biāo)服務(wù),需要強(qiáng)大...
    Vicky_L閱讀 672評(píng)論 0 0

友情鏈接更多精彩內(nèi)容