劍指offer15 python定義單鏈表

2021-10-02 16:40:27 字數 2340 閱讀 7976

class listnode:

def __init__(self, x):

self.val = x

self.next = none

單鏈表是在結點類的基礎上,由乙個乙個結點構成。

鍊錶知道頭結點就能獲取所有的節點。

r指向頭結點,p逐個指向後續節點。

initlist得到每個結點的位址,printlist得到節點的值。

class listnode:

def __init__(self, x):

self.val = x

self.next = none

class linklist:

def __init__(self):

self.head=none

def initlist(self, data):

# 建立頭結點

self.head = listnode(data[0])

r=self.head

p = self.head

# 逐個為 data 內的資料建立結點, 建立鍊錶

for i in data[1:]:

node = listnode(i)

p.next = node

p = p.next

return r

def printlist(self,head):

if head == none: return

node = head

while node != none:

print(node.val,end=' ')

node = node.next

if __name__ == '__main__':

l=linklist()

data1 = [1, 2, 3]

l1=l.initlist(data1)

l.printlist(l1)

題目:輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。

class linklist:

def __init__(self):

self.head=none

def initlist(self, data):

# 建立頭結點

self.head = listnode(data[0])

r=self.head

p = self.head

# 逐個為 data 內的資料建立結點, 建立鍊錶

for i in data[1:]:

node = listnode(i)

p.next = node

p = p.next

return r

def printlist(self,head):

if head == none: return

node = head

while node != none:

print(node.val,end=' ')

node = node.next

class listnode:

def __init__(self, x):

self.val = x

self.next = none

class solution:

# 返回listnode

def reverselist(self, phead):

# write code here

head = listnode(-1)

print(head)

while phead is not none:

tmp = head.next

print('--',tmp)

head.next = phead

phead = phead.next

head.next.next = tmp

return head.next

def printlist(self,head):

if head == none: return

node = head

while node != none:

print(node.val,end=' ')

node = node.next

if __name__ == '__main__':

l=linklist()

data1 = [1, 2, 3]

l1=l.initlist(data1)

l.printlist(l1)

s = solution()

res = s.reverselist(l1)

s.printlist(res)

劍指offer全套解答 劍指offer 1 5

1.二維陣列中的查詢 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。public class solution int n array 0 length i...

劍指offer真題1 5

第一題 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。分析 因為這是乙個有序的二維陣列,且從左至右遞增,從上至下遞增,經過畫圖就會發現,再這個二維陣列中有兩...

劍指offer刷題 15

面試題29 順時針列印矩陣 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。void printmatrixcloockwisely int numbers,int columns,int rows void printmatrixincircle int numbers,int co...