線性表之順序表 鍊錶 收官

2021-09-12 11:02:16 字數 3340 閱讀 4019

線性表分為:順序表=》邏輯上相鄰的兩個元素 物理上也相鄰

鏈式儲存=》邏輯上相鄰 物理上不相鄰  每個儲存單元通過乙個引用變數指向(連線) 個個不相鄰的儲存位址

當結構發生改變時      要考慮要不要擴容add() insert() 

下標是否合法get(int  index) insert(int index,object data)

順序表結構

改變(insert  remove), 必定伴隨移動,所以必定有for以及if 判斷。

細節=》刪除是從索引位置後面index+1處 往前移動 並且 current--

插入:依次往後移一位(要考慮能不能擴current++, ensurecurrence) 騰出乙個空 直到index 處 將值插入index處。

刪除:部分元素依次往前移

介面:

package zhang01;

public inte***ce mylist

順序表:

package zhang01;

public class sqlistimplements mylist

@override

public void add(e e)

@override

public void ensurecapaticy(int cur)

datas=newdatas;

} }@override

public void valiedindex(int index)

@override

public void clear()

@override

public boolean isempty()

return false;

} @override

public object set(int index,e e)

@override

public object get(int index)

@override

public int length()

@override

public int indexof(e obj)

} return 0;

} @override

public void remove(int index) throws exception

} }@override

public void insert1(int index, e e)

datas[index]=e;

current++;

} @override

public void display()

}public static void main(string args)

查詢:順序表(優)可以通過下標直接索引    鍊錶(缺)需要通過標記乙個乙個往下移動才知道是不是到了自己想要的索引

刪除(刪除):順序表(缺)要搬動元素                      鍊錶(優)只需要在插入點進行插入即可

1.遍歷鍊錶的結束條件是,curren.nextnode=null; 

2.一般初始化時將firstnode.next=null;

1.頭結點:firstnode=firstnode.nextnode;   (current=current.next;是不行的 沒有真正刪除頭結點)

2.中間節點:privious.nextnode=currentnode.next.node; 

3.寫**時,(1)先通過while(條件&¤t.nextnode!=null)找到待插入或者刪除的點,(2)如果只需要插入或者刪除乙個點,可以在while外進行單點插入或者刪除 ==》要考慮插入刪除的是不是頭結點==》頭結點的插入刪除與其他節點不同

(3)如果要插入刪除多個則需要在while迴圈中進行,因為只有這樣才能在邊進行遍歷邊進行插入刪除多個

4.插入操作要先建立乙個待插入的節點,在通過 privious current 移動到指定位置進行插入

2.node類物件  包含乙個資料變數  和  能指向節點物件的變數

3.雖沒有所謂的下標,但有乙個pos 在每次的移動過程中  告訴我們移動到哪個位置  可以用來尋找待插入刪除的下標   。

package set;

class node

public node()

}public class linklist

public void addfirst(e e) else }

public void addlast(e e) else

tempnode.nextnode=node;

} }public void insert(int index,e e)

node node=new node(e);

node current=header;

node privious=header;

while (pos!=index)

node.nextnode=current;

privious.nextnode=node;

pos=0;

}public int size()

return size; }

public void deletefirstnode() //firstnode 沒什麼神奇之處 只是乙個node型別的變數而已 用來記錄node物件的位址

public void deletebypos(int index)

node current=header;

node privious=header;

while (current.nextnode!=null)

pos++;

} pos=0; }

public void deletebydata(e e) else

}tempnode=tempnode.nextnode;

}

}public void displayallnode( )

system.out.println();

}public e get(int index)

node tempnode=header;

if (pos!=index)

tempnode=tempnode.nextnode;

return (e)tempnode.data;

}//

// public e findbydata(e datae)

public static void main(string args)

}

線性表(順序表 鍊錶)

在程式中,經常需要將一組 通常是同為某個型別的 資料元素作為整體管理和使用,需要建立這種元素組,用變數記錄他們傳進傳出函式等。一組資料中包含的元素個數可能發生變化。對於這種需求,最簡單的解決方案就是將這樣一組元素看成乙個序列,用元素在序列裡的位置和順序,表示實際應用中的某種有意義的資訊,或者表示資料...

線性表之順序表和煉表

標籤 單鏈表 順序表優缺點 時間複雜度 線性表 2016 03 23 23 43 5200人閱讀收藏 舉報 c c 44 作者同類文章x 這裡比較的是是基於c語言實現的順序表與單鏈表,與其他語言的實現可能會有差異,但我相信語言是相通的,它們的實現機制應該也差不多。1 what 什麼是順序表和單鏈表 ...

線性表之順序表

資料結構草草學過,不過沒有認真運用過。雖然知道一些最為基本的抽象型別及一些常用操作,不過叫我把這些基本的演算法寫出來我也 是寫不出來的。因為常說資料結構 演算法是乙個程式設計師最基本的素質,所以這次認真加以複習。在複習的同時我盡量將自己學習的其他的 一些基本知識比如c 中的物件導向思想也引入進來,同...