資料結構 鏈式儲存線性表

2021-08-16 21:01:25 字數 2959 閱讀 2961

鏈式儲存結構的線性表(簡稱為鍊錶)將採用一組位址任意的儲存單元存放線性表中的資料元素,鏈式結構的線性表不會按線性的邏輯順序來儲存資料元素,它需要在每乙個資料元素裡儲存乙個引用下乙個資料元素的引用。

優點:插入、刪除元素快,充分利用計算機記憶體空間

缺點:查詢元素需要整體遍歷,空間開銷大

單鏈表:

/**

* created by administrator on 2018/3/13.

*/public class linklist

public node(t data, node next)

}//儲存該鍊錶的頭節點

private node header;

//儲存該鍊錶的尾節點

private node tail;

//儲存該鍊錶中已包含的節點數

private int size;

//建立空鍊錶

public linklist()

//以指定資料元素來建立鍊錶,該鍊錶只有乙個元素

public linklist(t element)

//返回鍊錶長度

public int length()

//獲取鏈式線性表中索引為index處的元素

public t get(int index)

//根據索引 index 獲取指定位置的節點

private node getnodebyindex(int index)

//從 header 節點開始

node current = header;

for (int i = 0; i < size && current != null; i++, current = current.next)

}return null;

}//查詢鏈式線性表中指定元素的索引

public int locate(t element)

}return -1;

}public void insert(t element, int index)

if (header == null) else else }}

//採用尾插法為鍊錶新增新節點

public void add(t element) else

size++;

}//採用頭插法為鍊錶新增新節點

public void addatheader(t element)

size++;

}//刪除鏈式線性表中指定索引處的元素

public t delete(int index)

node del = null;

if (index == 0) else

size--;

return del.data;

}//刪除鏈式線性表中的最後乙個元素

public t remove()

public boolean empty()

public void clear()

public string tostring() else

}return sb.tostring();}}

public static void main(string args)

}

迴圈鍊錶:首尾相接的鍊錶,將單鏈表的尾節點next指向單鏈表header節點

/**

* created by administrator on 2018/3/13.

*/public class dulinklist

public node(t data, node prev, node next)

}//儲存該鍊錶的頭節點

private node header;

//儲存該鍊錶的尾節點

private node tail;

//儲存該鍊錶中已包含的節點數

private int size;

public dulinklist()

public dulinklist(t element)

public int length()

public t get(int index)

private node getnodebyindex(int index)

if (index <= size / 2)

}} else }}

return null;

}public int locate(t element)

}return -1;

}public void insert(t element, int index)

if (header == null) else else }}

public void add(t element) else

size++;

}public void addatheader(t element)

size++;

}public t delete(int index)

node del = null;

if (index == 0) else

del.prev = null;

del.next = null;

}size--;

return del.data;

}public t remove()

public boolean empty()

public void clear()

public string tostring() else

}return sb.tostring();}}

public string reversetostring() else

}return sb.tostring();}}

public static void main(string args)

}

線性表的鏈式儲存 資料結構

為了表示每個資料元素與其直接後繼資料元素之間的邏輯關係,除了儲存本身的資訊之外,還需儲存乙個指示其直接後繼的資訊 即直接後繼的儲存位置 我們把儲存資料元素資訊的位置稱為資料域,把儲存其直接後繼資訊的位置稱為指標域。這兩部分組成資料元素的結點 node 頭結點頭結點是為了操作的統一和方便而設立的,放在...

資料結構 線性表之鏈式儲存結構

資料結構定義 common.h ifndef hi comm h define hi comm h include include include include define list init size 100 線性表儲存空間的初始分配量 define list increment 10 線性表...

資料結構 線性表(順序儲存與鏈式儲存)

所謂的線性表是資料結構的一種。定義為零個或者多個資料元素的有限序列。線性表分為順序儲存結構與鏈式儲存結構。1 順序儲存結構通俗來說就是我們平常熟悉的陣列,他就是一種典型的順序儲存結構。我們都知道陣列有自己的長度,並且一旦長度確定後不可以進行改變 不是絕對的 說起順序儲存結構 陣列 我們就應該考慮一下...