python 鍊錶常見操作

2021-09-24 07:41:36 字數 3411 閱讀 5582

鍊錶由一系列不必在記憶體中相連的結構構成,這些物件按線性順序排序。每個結構含有表元素和指向後繼元素的指標。最後乙個單元的指標指向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...

鍊錶的常見操作

鍊錶是資料結構的重要內容,在電腦程式中應用廣泛,同時也是各公司筆試題目的重點。以下簡單實現了鍊錶的一些操作,包括建立 增加節點 刪除節點 單鏈表逆置 合併有序鍊錶等。一 鍊錶建立 鍊錶主要有三種形式,包括單鏈表 雙鏈表和迴圈鍊錶。單鏈表每個節點只包含乙個後驅指標,雙鏈表節點同時包含乙個前驅指標和乙個...

鍊錶的常見操作

鍊錶是資料結構的重要內容,在電腦程式中應用廣泛,同時也是各公司筆試題目的重點。以下簡單實現了鍊錶的一些操作,包括建立 增加節點 刪除節點 單鏈表逆置 合併有序鍊錶等。一 鍊錶建立 鍊錶主要有三種形式,包括單鏈表 雙鏈表和迴圈鍊錶。單鏈表每個節點只包含乙個後驅指標,雙鏈表節點同時包含乙個前驅指標和乙個...