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 ...