線性表分為:順序表=》邏輯上相鄰的兩個元素 物理上也相鄰
鏈式儲存=》邏輯上相鄰 物理上不相鄰 每個儲存單元通過乙個引用變數指向(連線) 個個不相鄰的儲存位址
當結構發生改變時 要考慮要不要擴容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 中的物件導向思想也引入進來,同...