鍊錶由一系列不必在記憶體中相連的結構構成,這些物件按線性順序排序。每個結構含有表元素和指向後繼元素的指標。最後乙個單元的指標指向null。為了方便鍊錶的刪除與插入操作,可以為鍊錶新增乙個表頭。
鍊錶的基本元素有:
head:head節點永遠指向第乙個節點
tail: tail永遠指向最後乙個節點
none:鍊錶中最後乙個節點的指標域為none值
# 定義乙個node類
class
node()
: def __init__
(self, value = none, next = none)
: self._value = value
self._next = next
def get_value
(self)
:return self._value
def get_next
(self)
:return self._next
def set_value
(self, new_value)
: self._value = new_value
def set_next
(self, new_next)
: self._next = new_next
#實現linked list及其各類操作方法
class
linkedlist()
: def __init__
(self)
: self._head =
node()
self._tail =
node()
self._length =
0 # 判斷非空
def is_empty
(self)
:return self._head == none
# add在鍊錶前端新增元素
def add
(self, value)
: new_node =
node
(value, none)
new_node.
set_next
(self._head)
self._head = new_node
(self, value)
: new_node =
node
(value)
if self.
is_empty()
: self._head = new_node
else
: current = self._head
while current.
get_next()
!= none:
current = current.
getnext()
current.
set_next
(new_node)
# search檢索元素是否在鍊錶中
def search
(self, value)
: current = self._head
foundvalue = false
while current != none and not foundvalue:
if current.
get_value()
== value
foundvalue = true
else
: current = current.
get_next()
return foundvalue
# index索引元素在鍊錶中的位置
def index
(self, value)
: current = self._head
count =
0 found = false
while current != none and not found:
count +=
1if current.
get_value()
== value:
found = true
else
: current = current.
get_next()
if found:
return count
else
: raise valueerror
('%s is not in linkedlist'
% value)
# remove刪除鍊錶中的某項元素
def remove
(self, value)
: current = self._head
pre = none
while current != none:
if current.
get_value()
== value:
if not pre:
self._head = current.
get_next()
else
: pre.
set_next
(current.
get_next()
)break
else
: pre = current
current = current.
get_next()
# insert鍊錶中插入元素
def insert
(self, pos, value)
:if pos <=1:
self.
add(value)
elif pos > self.
size()
: self.
(value)
else
: temp =
node
(value)
pre = none
current = self._head
count =
1while count < pos:
count +=
1 pre = current
current = current.
get_next()
pre.
set_next
(temp)
temp.
set_next
(current)
鍊錶的常見操作
include include includeusing namespace std typedef struct nodetype node typedef struct dnodetype dnode 建立單鏈表 node createlist node head node current he...
鍊錶的常見操作
鍊錶是資料結構的重要內容,在電腦程式中應用廣泛,同時也是各公司筆試題目的重點。以下簡單實現了鍊錶的一些操作,包括建立 增加節點 刪除節點 單鏈表逆置 合併有序鍊錶等。一 鍊錶建立 鍊錶主要有三種形式,包括單鏈表 雙鏈表和迴圈鍊錶。單鏈表每個節點只包含乙個後驅指標,雙鏈表節點同時包含乙個前驅指標和乙個...
鍊錶的常見操作
鍊錶是資料結構的重要內容,在電腦程式中應用廣泛,同時也是各公司筆試題目的重點。以下簡單實現了鍊錶的一些操作,包括建立 增加節點 刪除節點 單鏈表逆置 合併有序鍊錶等。一 鍊錶建立 鍊錶主要有三種形式,包括單鏈表 雙鏈表和迴圈鍊錶。單鏈表每個節點只包含乙個後驅指標,雙鏈表節點同時包含乙個前驅指標和乙個...