常見三種:
1.線性表的順序儲存:可以用陣列實現,優點指定id,獲取資料(get)與修改資料(set)比較容易,時間複雜度為常數,但是對於插入與刪除就比較麻煩,時間複雜度最少為o(1),最多為o(n),平均時間複雜度為o(n).
2.線性表單向鏈式儲存:核心就是每個節點包含下乙個節點的id,呼叫next獲取下乙個節點,這樣的好處是,修改的時候只需要更改下乙個節點的id就行了,缺點就是獲取指定id的節點時需要遍歷一遍,最壞的情況下時間複雜度為o(n),最好為常數,最終平均時間複雜度為o(n)。
節點node如下:
public class node
public void setdata(int data)
public node getnextnode()
public void setnextnode(node nextnode)
}
下面簡單的實現單向線性鍊錶:
public class mylinklist
public int getlength()
public void addnode(node node)
mnextnode.setnextnode(node);
mnextnode = node;
length++;
} public void addnode(int position,node node)
else
length++; }
public node getnode(int position)
public class mylinklist
public int getlength()
public void addnode(node node)
node.setprenode(mnextnode);
mnextnode.setnextnode(node);
mnextnode = node;
length++;
} public void addnode(int position,node node)
else
length++; }
public node getnode(int position)
system.out.println("length:"+linklist.getlength());
system.out.println("first node:"+linklist.getfirstnode().getdata());
system.out.println("last node:"+linklist.getlastnode().getdata());
node n=linklist.getlastnode();
system.out.println("pre node:"+n.getprenode().getdata());
system.out.println("pre node:"+n.getprenode().getprenode().getdata());
system.out.println("pre node:"+n.getprenode().getprenode().getprenode().getdata());
}
列印如下:
p-4node():3
p-3node():2
p-2node():1
p-1node():0
p-0node():4
length:5
first node:4
last node:3
pre node:2
pre node:1
pre node:0
線性表 線性儲存
1 include 2 using namespace std 3 定義線性表結構體 4 define size 100 5 typedef struct sqlist list 10 初始化11 void initlist sqlist l 18 設定表長 19 l.length 0 20 設定表...
線性表 線性表的順序儲存結構
線性表的順序儲存結構 線性結構是乙個資料元素的有序 次序 集。集合中必存在唯一的乙個 第一元素 集合中必存在唯一的乙個 最後元素 除最後元素外,均有唯一的後繼 除第一元素外,均有唯一的前驅。adt list 資料關係 r1 adt list 容易混的概念 引用符號 和引用型操作沒有關係 加工型操作 ...
線性表 線性表的順序儲存結構
include include using namespace std define ok 1 define error 0 define list init size 100 define listincrement 10 typedef int status typedef int elemty...