程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python定義一個單鏈表可判斷是否為空,計算長度,插入節結點實驗

編輯:Python

說明:若需要數據附件及python源文件請移步微信公眾號“創享日記”,聯系作者有償獲取!


一、題目

一、題目

使用python定義一個單鏈表,並實現以下功能:
(1)判斷鏈表是否為空;
(2)計算鏈表長度;
(3) 在鏈表尾部插入結點。

二、題目分析

要定義一個單鏈表,如同c++一樣,需要一個節點的結構體,python沒有struct,那麼就用class代替。結構體裡包含的就是節點的值和指向下個節點的“指針”。所以我們在所定義的節點的init初始化函數裡要傳入data值作為節點數據,在函數體內要就是構造函數操作,雖然沒有傳入next指針,但是還是要寫上self.next=None.接下來就是定義單鏈表的類,首先要進行構造函數的編寫,自然是將自身的頭結點置空。然後它的判空函數就是應該返回頭結點是否為空即可。對於求長度的length函數,我們定義一個計數器cnt=0,然後令n=head,之後給一個while循環,當n不等於None的時候,就說明n是有不為空的,我們就讓cnt加一並且讓n指向下一個節點,接續進行判斷,最後返回的計數器cnt的值就是最終的結果。在尾部插入數據的函數其實也不難,首先一定要進行判空操作,如果為空就說明head是None,那麼就將data的值賦給head,並且讓head不為空即可。如果列表不為空的時候就一直往下走,走到最後一個非空節點的時候,讓該節點的下個節點的值為新增的數據。

三、代碼

class Node(object):
def __init__(self, data):
self.data = data
self.next = None
class LinkedList(object):
def __init__(self):
self.head = None
def isEmpty(self):
return self.head is None
def length(self):
cnt=0
n=self.head
while n!= None:
cnt+=1
n=n.next
return cnt
def insert_last(self,data):
if self.isEmpty():
self.head=Node(data)
else:
n=self.head
while n.next!=None:
n=n.next
n.next=Node(data)
lists=LinkedList()
print(lists.isEmpty())
print(lists.length())
lists.insert_last(2)
lists.insert_last(1)
lists.insert_last(3)
print(lists.isEmpty())
print(lists.length())

四、實驗結果(略)


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved