面試 資料結構(3)(鍊錶)

2021-08-04 13:56:14 字數 3016 閱讀 5836

1**除了用陣列描述線性表還可以用鍊錶描述線性表**

2在鏈式描述中,線性表的元素在記憶體中的儲存位置是隨機的。每個元素都有乙個明確的指標或鏈指向線性表的下乙個元素的位置(即位址)

*陣列和鍊錶的區別:

在陣列中,元素的位址是由數學公式決定的,而在鏈式描述中,元素的位址是隨機分布的

順序表是順序儲存,非順序訪問,鍊錶是非順序儲存。順序訪問

因此鏈式表便於插入,刪除操作,不便於查詢

3鍊錶分為單向鍊錶,雙向鍊錶和迴圈鍊錶

首先用來說一下單向鍊錶:

**實現增刪改查:

package com.tyxh.link;

//節點類

public

class node

//顯示此節點

public

void

display()

}package com.tyxh.link;

//單鏈表

public

class linklist

// 插入乙個頭節點

public

void

addfirstnode( int data)

// 刪除乙個頭結點,並返回頭結點

public node deletefirstnode()

// 在任意位置插入節點 在index的後面插入

public

void

add(int index, int data)

node. next = current;

previous. next = node;

pos = 0;

}// 刪除任意位置的節點

public node deletebypos( int index)

if(current == first) else

return current;

}// 根據節點的data刪除節點(僅僅刪除第乙個)

public node deletebydata( int data)

previous = current;

current = current. next;

}if(current == first) else

return current;

}// 顯示出所有的節點資訊

public

void

displayallnodes()

system. out.println();

}// 根據位置查詢節點資訊

public node findbypos( int index)

return current;

}// 根據資料查詢節點資訊

public node findbydata( int data)

return current;

}}package com.tyxh.link;

//測試類

public

class testlinklist

}

再就是雙向鍊錶:

} private node head = new node(null); // 頭節點

private

int size; // 鍊錶大小

// 以下是介面方法

//新增到煉表表頭

public boolean addfirst(object o)

//將元素新增到煉表表尾

public boolean addlast(object o)

public boolean add(object o)

//將元素新增到指定位置

public boolean add(int index, object o)

//移除指定位置

public boolean remove(int index)

//移除煉表表頭元素

public boolean removefirst()

//移除煉表表尾元素

public boolean removelast()

//取到指定位置的元素值

public object get(int index)

//返回鍊錶的大小

public

intsize()

public string tostring()

return s.tostring();

} //以下是實現方法

//查詢鍊錶元素

private node getnode(int index)

//在某元素之前新增元素

private

void

addbefore(node newnode, node node)

//在某元素之後新增元素

private

void

addafter(node newnode, node node)

//移除特定元素

private

void

removenode(node node)

} //有些地方還可以優化,比如查詢時可以判斷索引是否大於size的一半,如果是的話,就從另一頭開始迭代。

測試類public

class test

} 1

迴圈鍊錶:

資料結構3 鍊錶

鍊錶是儲存許多同型別的資料元素組成的有序列表。鍊錶如同火車,人數決定車箱數,人多就向系統申請多加乙個車廂,人少就去除乙個車廂。這種動態分配記憶體的方式,按需分配,可以避免記憶體的浪費。int p val int型別的指標p指向val 動態記憶體分配 就是程式在執行的時候向系統申請記憶體,程式執行結束...

資料結構 鍊錶(3)

現在我們可以回頭總結一下我們的鍊錶 鍊錶是乙個由節點組成的一條鏈。每個節點包含兩條資訊 序列中儲存的是一些資料 節點中有指向列表中下乙個節點的鏈結。我們可以從第乙個單元格開始跟隨著link指標,遍歷整個鍊錶。如同下圖所示 左邊是乙個節點,右邊是由節點組成的鍊錶 鍊錶是用於儲存元素序列的資料結構。每個...

面試準備 資料結構 鍊錶

include using namespace std 鍊錶節點定義 template struct slnode slnode const t item,slnode nextnode null 鍊錶類定義 templateclass sllist sllist bool isempty int ...