Python實現鏈表:從基礎到應用

一、引言

????????鏈表是一種常見的數據結構,它由一系列節點組成,每個節點包含數據和指向下一個節點的指針鏈表在內存中的存儲不是連續的,這使得它在插入和刪除操作上具有較高的效率。本文將使用Python語言來實現一個簡單的鏈表,并展示其基本功能。

目錄

一、引言

二、節點定義

三、鏈表實現

四、鏈表操作

五、應用示例

總結



二、節點定義

  • 首先,我們需要定義一個節點類(Node),它包含數據成員和指向下一個節點的指針。
class Node:  def __init__(self, data=None):  self.data = data  self.next = None

三、鏈表實現

  • 接下來,我們定義一個鏈表類(LinkedList),它包含頭節點和一系列操作鏈表的方法。
class LinkedList:  def __init__(self):  self.head = None  def add_to_head(self, value):  new_node = Node(value)  new_node.next = self.head  self.head = new_node  def print_list(self):  current_node = self.head  while current_node:  print(current_node.data, end=" ")  current_node = current_node.next  print()

四、鏈表操作

  • 在鏈表類中,我們實現了兩個基本操作:add_to_headprint_list
  • add_to_head方法用于在鏈表頭部添加新節點。它首先創建一個新節點,并將新節點的next指向當前的頭節點,然后更新頭節點為新節點。
  • print_list方法用于打印鏈表中的所有元素。
  • 它從頭節點開始遍歷鏈表,打印每個節點的數據,并在末尾添加一個空格。當遍歷完整個鏈表后,它打印一個換行符來美化輸出。

五、應用示例

  • 下面是一個使用鏈表類的示例:
linked_list = LinkedList()  
linked_list.add_to_head(3)  
linked_list.add_to_head(2)  
linked_list.add_to_head(1)  print("鏈表中的元素為:", end=" ")  
linked_list.print_list()

  • 輸出結果為:?
鏈表中的元素為: 1 2 3

總結

????????鏈表是一種靈活且高效的數據結構,特別適用于需要頻繁進行插入和刪除操作的場景。通過Python實現鏈表,我們可以更好地理解鏈表的工作原理和應用場景。在實際應用中,鏈表常用于實現緩存、隊列、棧等數據結構,以及解決一些算法問題,如排序、查找等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712118.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712118.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712118.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【前端面試題1】偽類與偽元素有什么區別

偽類與偽元素的區別: 1.偽類使用單冒號,而偽元素使用雙冒號。如 :hover 是偽類,::before 是偽元素 2.偽元素會在文檔流生成一個新的元素,但偽元素本身并不是DOM元素,并且可以使用 content 屬性設置內容 CSS偽類與偽元…

卷積神經網絡基本概念補充

卷積(convolution)、通道(channel) 卷積核大小一般為奇數,有中心像素點,便于定位卷積核。 步長(stride)、填充(padding) 卷積核移動的步長(stride…

小白提示您:FaceTime詐騙持續高發,小伙伴們謹防詐騙!

前幾天小白的iPhone突然接到了個FaceTime通話請求,說是某抖音賬號需要續費啥的才能解鎖某些功能。(具體小白也記不太清了) 這幾天也有朋友說有個支付寶客服打FaceTime通話給他說快遞出現了點問題,需要操作認證一下才能退款啥的。…

多線程萬字詳解

進程和線程是計算機程序執行的兩個重要概念。 1.進程: 進程是操作系統分配資源的基本單位,每個進程都有自己獨立的地址空間,每啟動一個進程,系統就會為它分配內存。進程間通信比較復雜,需要用到IPC(InterP…

js監聽F11觸發全屏事件

當用戶使用 F11 鍵進行瀏覽器全屏時,由于此時并非通過瀏覽器提供的 Fullscreen API 進入全屏模式,因此無法通過 fullscreenchange 事件來監聽全屏狀態的變化。在這種情況下,可以通過監聽 resize 事件來檢測瀏覽器窗口大小的變化,從…

【學習日記】快速排序

思想 快速排序之所以快,一個重要原因就是其每一次遍歷,都把本輪要排序的數字(稱為軸)放到了最終的位置上快排使用分治思想,所以一般采用遞歸實現,非遞歸版本可以用棧根據第一點,我們需要一個函…

[滲透教程]-006-滲透測試-Metasploit

文章目錄 1.Metasploit簡介2.配置2.1方法1 推薦2.2方法23.使用4. Metasploitable2-linuxMetasploit攻擊流程攻擊實例步驟會話管理1.Metasploit簡介 Metasploit是一個滲透測試平臺,使您能夠查找,利用和驗證漏洞.是一個免費的可下載的,通過它可以很容易對計算機軟件漏洞實施攻擊.…

AttributeError_ ‘list‘ object has no attribute ‘view‘

問題描述 訓練yolov9的時候遇到了下面的問題。 In loss_tal.py: pred_distri, pred_scores torch.cat([xi.view(feats[0].shape[0], self.no, -1) for xi in feats], 2).split( (self.reg_max * 4, self.nc), 1) The error is as follows: AttributeError: list …

JavaWeb之 Web概述

目錄 前言1.1 Web和 JavaWeb的概念1.2 JavaWeb技術棧1.2.1 B/S架構1.2.2 靜態資源1.2.3 動態資源1.2.4 數據庫1.2.5 HTTP協議1.2.6 Web服務器 1.3 JavaWeb 學習內容 前言 博主將用 CSDN 記錄 Java 后端開發學習之路上的經驗,并將自己整理的編程經驗和知識分享出來&a…

【Web自動化測試——代碼篇十二】自動化測試模型——數據驅動測試和關鍵字驅動測試

🔥 交流討論:歡迎加入我們一起學習! 🔥 資源分享:耗時200小時精選的「軟件測試」資料包 🔥 教程推薦:火遍全網的《軟件測試》教程 📢歡迎點贊 👍 收藏 ?留言 &#x1…

「優選算法刷題」:刪除字符串中的所有相鄰重復項

一、題目 給出由小寫字母組成的字符串 S,重復項刪除操作會選擇兩個相鄰且相同的字母,并刪除它們。 在 S 上反復執行重復項刪除操作,直到無法繼續刪除。 在完成所有重復項刪除操作后返回最終的字符串。答案保證唯一。 示例: 輸…

理解C#里面的集合有哪些?怎么用,什么是安全集合?

介紹 在C#中,集合是一種用于存儲和操作多個元素的數據結構。它們提供了各種操作,如添加、刪除、查找等,以及遍歷集合中的元素。集合通常根據其實現方式和行為特征進行分類。 集合繼承IEnumerable 在C#中,幾乎所有的集合類型都實現…

簡歷中自我評價,是否應該刪掉?

你好,我是田哥 年后,不少朋友已經開始著手準備面試了,準備面試的第一個問題就是:簡歷。 寫簡歷是需要一些技巧的,你的簡歷是要給面試官看,得多留點心。 很多簡歷上都會寫自我評價/個人優勢/個人總結等&…

2024有哪些免費的mac蘋果電腦深度清理工具?CleanMyMac X

蘋果電腦用戶們,你們是否經常感到你們的Mac變得不再像剛拆封時那樣迅速、流暢?可能是時候對你的蘋果電腦進行一次深度清理了。在這個時刻,擁有一些高效的深度清理工具就顯得尤為重要。今天,我將介紹幾款優秀的蘋果電腦深度清理工具…

一個Web3項目的收官之作,必然是友好的用戶界面(Web3項目三實戰之四)

正如標題所述,一個對用戶體驗友好的應用,總是會贏得用戶大加贊賞,這是毋庸置疑的。 甭管是web2,亦或是已悄然而至的Web3,能有一個外觀優美、用戶體驗效果佳的的界面,那么,這個應用無疑是個成功的案例。 誠然,Web3項目雖然核心是智能合約攥寫,但用戶界面也是一個DApp不…

【Leetcode每日一刷】哈希表|綱領、242.有效的字母異位詞、349. 兩個數組的交集

綱領 🔗代碼隨想錄理論部分 關于哈希表這個數據結構就不再重復講了,下面對幾個關鍵點記錄一下: 哈希碰撞 解決方法1:拉鏈法 解決方法2:線性探測法 下面針對做題要用到的三種結構講一下(也是重復造輪子了…

vue.config.js publicPath 和 vue-router base 結合配置項目根目錄為二級目錄案例

背景: 同個域名下需要有 PC 管理后臺, H5 端, 企業微信 ......等多個端, 需要在一個域名下通過不同的路徑來區分不同的項目; 例如: abc.com/pc, abc.com/h5, abc.com/wx-work.... 此處做個記錄 步驟: 1. 修改 vue.config.js 中的 publicPath module.exports {outputDir:…

MATLAB|【免費】概率神經網絡的分類預測--基于PNN的變壓器故障診斷

目錄 主要內容 部分代碼 結果一覽 下載鏈接 主要內容 ?《MATLAB神經網絡43個案例分析》共有43章,內容涵蓋常見的神經網絡(BP、RBF、SOM、Hopfield、Elman、LVQ、Kohonen、GRNN、NARX等)以及相關智能算法(SVM、決策…

Java 下載excel文件

一、背景 微信小程序需要導出excel文件,后端技術Java,前端使用uniapp框架,使用excel模板。 二、excel 報表模板 需要補充的內容是以下標記問號的,其中有個表格,內容是動態添加的 三、Java端代碼實現 關鍵步驟&…

Topaz Video AI:一鍵提升視頻品質,智能重塑影像魅力 mac/win版

Topaz Video AI是一款革命性的視頻智能處理軟件,它利用先進的機器學習和人工智能技術,為視頻創作者提供了前所未有的視頻增強和修復功能。無論您是專業視頻編輯師、攝影師,還是熱愛視頻創作的愛好者,Topaz Video AI都能幫助您輕松…