單鏈表及其節點
鍊錶是一系列的儲存資料元素的單元通過指標串接起來形成的,因此每個單元至少有兩個域,
乙個域用於資料元素的儲存,另乙個域是指向其他單元的指標。
這裡具有乙個資料域和多個指標域的儲存單元通常稱為 結點(node)
鍊錶的第乙個結點和最後乙個結點,分別稱為鍊錶的 首結點和 尾結點。
尾結點的特徵是其 next 引用為空(null)。
鍊錶中每個結點的 next 引用都相當於乙個指標,指向另乙個結點,
借助這些 next 引用,我們可以從鍊錶的首結點移動到尾結點。
在單鏈表中通常使用 head 引用來指向鍊錶的首結點,由 head 引用可以完成對整個鍊錶中所有節點的訪問。
單鏈表的乙個重要特性就是只能通過前驅結點找到後續結點,而無法從後續結點找到前驅結點。
**實現
實現介面
namespace _001_線性表
//索引器
tgetele
(int index)
;//根據索引得到元素
intlocate
(t item)
;//根據元素得到索引
}}
實現節點
namespace _001_線性表.單鏈表
public
node(t
value
)public
node
(node next)
public
node(t
value
, node next)
public
t data
internal node next
}}
實現單鏈表
namespace _001_線性表.單鏈表
public
tthis
[int index]
return temp.data;}}
public
void
add(
t item)
//頭結點不為空,新增到鍊錶的尾部,把尾部的指標,指向當前新建立的節點
else
else
} temp.next = newnode;
//新節點放到鍊錶的尾部}}
public
void
clear()
public
tdelete
(int index)
else
node prenode = temp;
//前乙個節點
node cutnode = temp.next;
//當前需要插入的節點
data = cutnode.data;
node nextnode = temp.next.next;
//刪除節點的後乙個節點
prenode.next = nextnode;
//前乙個節點指向刪除節點後的乙個節點
}return data;
}public
tgetele
(int index)
public
intgetlength()
node temp = head;
int count =1;
while
(true
)else
}return count;
}public
void
insert
(t item,
int index)
else
node prenode = temp;
//前乙個節點
node cutnode = temp.next;
//當前需要插入的節點
prenode.next = newnode;
//前節點的指標指向新節點
newnode.next = cutnode;
//新節點的指標指向當前的節點,即 當前的節點向後移動}}
public
bool
isempty()
public
intlocate
(t item)
else
else
else}}
return-1
;}}}
}
建立單鏈表
一 單鏈表的建立 有了動態記憶體分配的基礎,要實現鍊錶就不難了。所謂鍊錶,就是用一組任意的儲存單元儲存線性表元素的一種資料結構。鍊錶又分為單鏈表 雙向鍊錶和迴圈鍊錶等。我們先講講單鏈表。所謂單鏈表,是指資料接點是單向排列的。乙個單鏈表結點,其結構型別分為兩部分 1 資料域 用來儲存本身資料 2 鏈域...
建立線性單鏈表,並將單鏈表翻轉
package 資料結構 public class lianbiao public lianbiao 首先建立單鏈表的結點類。package 資料結構 鍊錶反轉 class lianbiao2 extends lianbiao1 public lianbiao2 int n public void ...
單鏈表的建立與使用
include include define ok 1 define error 0 define true 1 define false 0 typedef int status typedef int elemtype typedef struct lnodelnode,linklist 定義結...