java實現單鏈表 雙鏈表 環鏈表

2021-09-24 01:37:55 字數 2141 閱讀 2242

鍊錶是程式裡重要的資料結構,在程式世界運用很廣泛,眾所周知的當屬於jdk裡的linklist了。

鍊錶的優點,是相對於陣列來說,擴容是非常快的,如果是陣列擴容,陣列是新申請乙個更大空間的陣列,然後把老陣列內的資料複製到新陣列;而鍊錶就不必申請新鍊錶,直接再分配乙個元素的儲存空間即可。

鍊錶的缺點,相對於陣列來說,陣列的訪問元素是直接根據下標來的,時間複雜度是o(1);而鍊錶則需要遍歷整個鍊錶,最差的情況,時間複雜度是o(n)。

public class singlernodetest 

private void add(string data)

node tmp = head;

while (null != tmp.next)

node n2 = new node();

n2.data = data;

tmp.next = n2;

}private void remove(string data) else

return;

}node tmp = head;

while (null != tmp.next)

tmp = tmp.next;}}

private node get(string data)

tmp = tmp.next;

}return null;

}private void show()

}static class node

}}

public class doublenodetest 

private void add(string data)

node tmp = head;

while (null != tmp.next)

node n2 = new node();

n2.data = data;

// 把上乙個節點,掛到新生成節點的pre

n2.pre = tmp;

// 把新生成的節點掛到上乙個節點

tmp.next = n2;

}private node get(string data)

tmp = tmp.next;

}return null;

}private void remove(string data) else

return;

}node tmp = head;

while (null != tmp.next)

return;

}tmp = tmp.next;}}

private void show() else }}

static class node

}}

public class cyclenodetest 

private void add(string data)

node tmp = head;

for (int i = 1; i < count; i++)

node n2 = new node();

n2.data = data;

// 把上乙個節點,掛到新生成節點的pre

n2.pre = tmp;

// 把新生成的節點掛到上乙個節點

tmp.next = n2;

/** * 閉環操作 */

// 首節點的pre是新生成的節點

head.pre = n2;

// 新生成的節點的next是首節點

n2.next = head;

// 計數器+1

count++;

}private void remove(string data)

node tmp = head;

for (int i = 0; i < count; i++) else

count--;

return;

}tmp = tmp.next;}}

private node get(string data)

tmp = tmp.next;

}return null;

}private void show()

}static class node

}}

單鏈表 雙鏈表

實現乙個單鏈表,鍊錶初始為空,支援三種操作 1 向煉表頭插入乙個數 2 刪除第k個插入的數後面的數 3 在第k個插入的數後插入乙個數 現在要對該鍊錶進行m次操作,進行完所有操作後,從頭到尾輸出整個鍊錶。注意 題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的...

單鏈表和雙鏈表

單鏈表 單鏈表只有乙個指向下一結點的指標,也就是只能next 雙鏈表 雙鏈表除了有乙個指向下一結點的指標外,還有乙個指向前一結點的指標,可以通過prev 快速找到前一結點,顧名思義,單鏈表只能單向讀取 為什麼市場上單鏈表的使用多餘雙鏈表呢?從儲存結構來看,每個雙鏈表的節點要比單鏈表的節點多乙個指標,...

單鏈表和雙鏈表

單鏈表 是乙個node,儲存當前物件,並指向下乙個next,插入在第一位node,next指向原來的first 單鏈表 只儲存第乙個node的引用,雙端鍊錶 儲存兩個node的引用,第乙個和最後乙個node,可以從第乙個插入,也可以從最後乙個插入,也可以從頭部和尾部刪除 鏈結點,相當於是車廂 pub...