用 Python 對鍊錶進行操作

2021-09-12 06:57:04 字數 943 閱讀 7091

學資料結構時,一直用 c 語言,c 語言中有指標,實現鍊錶很方便,對鍊錶進行操作只需要修改指標的指向即可。但是最近用 python 刷 leetcode 題,發現python 沒有指標這個概念,剛開始確實不太適應,吃了不少苦頭。好在查閱了大量的資料,理解了如何用 python 對鍊錶進行操作。

因為 python 是動態語言,不需要進行變數宣告,可以直接把物件賦值給變數。python 對鍊錶進行操作,使用「引用 + 物件」的概念。

舉個例子,用 leetcode 第 24 題 swap nodes in pairs。這道題為交換單鏈表中相鄰的兩個結點的順序,給你乙個 1->2->3->4,你應該得到 2->1->4->3,具體實現**如下:

class listnode:

def __init__(self, x):

self.val = x

self.next = none

class solution:

pre, pre.next = self, head

while pre.next and pre.next.next:

a = pre.next

b = a.next

pre.next, b.next, a.next = b, a, b.next

pre = a

return self.next

這一行**很關鍵:

pre, pre.next = self, head
變數 pre 引用了 self 物件,現在這個物件為類 solution,類被例項化後,self 就變成了例項。pre.next 就是讓物件 self 擁有了乙個變數,現在被賦值為 head。經過迴圈之後,這個變數永遠儲存鍊錶中第乙個結點。

用python實現鍊錶操作

下面的方式涉及到 初始化鍊錶 鍊錶長度 插入 刪除 新增 查詢 逆序 class node object def init self,data,p 0 self.data data self.next p class linklist object def init self self.head 0...

對鍊錶進行排序

對鍊錶進行排序 參考的思路是來自於這位 哥們 definition for singly linked list.struct listnode class solution listnode rt sort head return rt listnode sort listnode begin 鍊...

用python對excel進行操作 讀,寫,修改

將乙個列表的資料寫入excel,第一行是標題,下面行數具體的資料 import xlwt 只能寫不能讀 st 姓名 年齡 性別 分數 mary 20,女 89.9 mary 20,女 89.9 mary 20,女 89.9 mary 20,女 89.9 book xlwt.workbook 新建乙個...