從單鏈表 list 中刪除第 i 個元素--Python

從單鏈表 list 中刪除第 i 個元素

  • 一、問題引入
  • 二、解題步驟
    • 1.思維導圖
    • 2.解題步驟
  • 三、代碼實現
  • 四、個人總結

一、問題引入

請編寫程序,將 n 個整數順次插入一個初始為空的單鏈表的表頭。隨后對任意給定的位序 i,刪除鏈表中第 i 個結點。注意:i 代表位序,從 1 開始。刪除結束后,輸出鏈表長度,并順序輸出鏈表中的每個結點的數值。

輸入格式:
輸入首先在第一行給出正整數 n(≤10^4);隨后一行給出 n 個 int 范圍內的整數,數字間以空格分隔;最后一行給出刪除位序 i,為 int 范圍內的整數。

輸出格式:
如果刪除的位置不合法,則不能刪除,在一行中輸出句子 錯誤:刪除位置不合法。。無論是否刪除成功,都按照題面描述的要求,在一行中輸出鏈表信息,格式為:

表長: x1 x2 … xn

注意數字間有 1 個空格分隔,行首尾無多余空格。

輸入樣例 :

5
1 2 3 4 5
3

輸出樣例:

4: 5 4 2 1

二、解題步驟

1.思維導圖

在這里插入圖片描述

2.解題步驟

步驟1:創建鏈表

  1. 初始化一個空鏈表(使用頭結點)
  2. 讀取n個整數
  3. 將每個整數插入到鏈表頭部(頭插法)

步驟2:刪除指定位置節點

  1. 檢查刪除位置i是否合法(1 ≤ i ≤ 鏈表長度)
  2. 從頭結點開始遍歷,找到第i-1個節點
  3. 將第i-1個節點的next指向第i+1個節點
  4. 釋放第i個節點的內存

步驟3:輸出結果

  1. 根據刪除是否成功,計算并輸出鏈表長度
  2. 遍歷鏈表,輸出所有節點的值

三、代碼實現

class LNode:def __init__(self, data=None):self.data = dataself.next = Noneclass LinkList:def __init__(self):self.head = LNode()  # 頭結點def create_list(self, n):"""創建鏈表"""for _ in range(n):num = int(input())new_node = LNode(num)new_node.next = self.head.nextself.head.next = new_nodedef delete_node(self, i):"""刪除鏈表中第 i 個結點"""if i < 1:return Falsep = self.headj = 1while p and j < i:p = p.nextj += 1if not p or not p.next:return Falsetemp = p.nextp.next = temp.nextdel tempreturn Truedef print_list(self):"""打印鏈表"""p = self.head.nextwhile p:print(f" {p.data}", end="")p = p.nextprint()def main():# 輸入鏈表長度n = int(input())# 創建鏈表link_list = LinkList()link_list.create_list(n)# 輸入刪除位置i = int(input())# 刪除結點if link_list.delete_node(i):print(f"{n - 1}:", end="")else:print("錯誤:刪除位置不合法。")print(f"{n}:", end="")# 打印鏈表link_list.print_list()# 調用主函數
if __name__ == "__main__":main()

四、個人總結

通過本次單鏈表刪除元素的實驗,我深入理解了鏈表數據結構的基本原理和操作方法。在實驗過程中,我掌握了頭插法創建鏈表的技巧,認識到這種插入方式能夠實現O(1)時間復雜度的插入操作,但會使元素順序與輸入順序相反。在刪除指定位置節點時,我學會了如何通過遍歷找到目標節點的前驅節點,這是鏈表操作中的關鍵技巧。

實驗中遇到的難點主要是邊界條件的處理。當刪除位置不合法時,需要給出明確的錯誤提示,這讓我意識到健壯的程序必須考慮所有可能的異常情況。通過調試,我發現鏈表操作中特別需要注意指針的移動和空指針的判斷,稍有不慎就會導致程序崩潰或內存泄漏。

這次實踐還讓我體會到鏈表與數組的顯著差異。鏈表不需要預先分配連續內存空間,插入刪除效率高,但隨機訪問效率低。在輸出結果時,我注意到鏈表的遍歷輸出需要特別注意格式控制。通過實驗,我不但鞏固了理論知識,還提升了實際編程能力。特別是在指針操作和內存管理方面有了更深刻的認識。

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

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

相關文章

git學習與使用(遠程倉庫、分支、工作流)

文章目錄 前言簡介git的工作流程git的安裝配置git環境&#xff1a;git config --globalgit的基本使用新建目錄初始化倉庫&#xff08;repository&#xff09;添加到暫存區新增/修改/刪除 文件狀態會改變 提交到倉庫查看提交&#xff08;commit&#xff09;的歷史記錄git其他命令…

九、日志分析和系統故障排查

目錄 1、日志分析1.1、日志介紹1.1.1、日志的功能1.1.2、日志文件的分類1.1.3、日志保存位置1.2、rsyslog服務1.2.1、發送日志到遠程日志服務器1.3、查看日志文件1.3.1、/var/log/messages文件的內容示例1.3.2、用戶登錄、退出系統的相關日志1.4、日志級別1.5、程序日志分析1.6…

C++ 非類成員變量 非類成員函數 全局變量 使用

1 使用特點 加 :: 變量使用 #include <iostream> using namespace std; int qwer 100; int asdf 900; void sitl(){std::cout <<"globe dog is sitting." << std::endl; }class Cat { public:static int num;}; int Cat::num 99;class Dog { …

【小烏龍問題】stm32供電,用過的ch340缺無法被識別

解決&#xff1a;更換正確供電&#xff08;stlink&#xff09;&#xff0c;不能用usb-ttl的僅供電&#xff0c;會干擾的&#xff01;&#xff01;&#xff01;&#xff01; 原來用stlink供電&#xff0c;今天沒拿就想著usb-ttl的電源供電&#xff0c;然后用ch340傳輸數據&…

使用 Navicat 17 for PostgreSQL 時,請問哪個版本支持 PostgreSQL 的 20150623 版本?還是每個版本都支持?

&#x1f9d1;?&#x1f4bb; PostgreSQL 用戶 使用 Navicat 17 for PostgreSQL 時&#xff0c;請問哪個版本支持 PostgreSQL 的 20150623 版本&#xff1f;還是每個版本都支持&#xff1f; &#x1f9d1;?&#x1f527; 官方技術中心 Navicat Premium 17 和 Navicat for P…

游戲引擎學習第305天:在平臺層中使用內存 Arena 的方法與思路

回顧前一天內容&#xff0c;并為今天的開發工作設定方向 我們正在直播制作完整游戲&#xff0c;當前正在實現一個精靈圖&#xff08;sprite graph&#xff09;的排序系統。排序的代碼已經寫完&#xff0c;過程并不復雜&#xff0c;雖然還沒做太多優化&#xff0c;但總體思路比…

PHP-FPM 調優配置建議

1、動態模式 pm dynamic; 最大子進程數&#xff08;根據服務器內存調整&#xff09; pm.max_children 100 //每個PHP-FPM進程大約占用30-50MB內存(ThinkPHP框架本身有一定內存開銷)安全值&#xff1a;8GB內存 / 50MB ≈ 160&#xff0c;保守設置為100 ; 啟動時創建的進程數&…

騰訊2025年校招筆試真題手撕(一)

一、題目 有n 把鑰匙&#xff0c;m 個鎖&#xff0c;每把鎖只能由一把特定的鑰匙打開&#xff0c;其他鑰匙都無法打開。一把鑰匙可能可以打開多把鎖&#xff0c;鑰匙也可以重復使用。 對于任意一把鎖來說&#xff0c;打開它的鑰匙是哪一把是等概率的。但你無法事先知道是哪一把…

【北郵通信系統建模與仿真simulink筆記】(2)2.3搭建仿真模型模塊操作運行仿真

【聲明】 本博客僅用于記錄博主學習內容、分享筆記經驗&#xff0c;不得用作其他非學術、非正規用途&#xff0c;不得商用。本聲明對本博客永久生效&#xff0c;若違反聲明所導致的一切后果&#xff0c;本博客均不負責。 目錄 【聲明】 一、搭建第一個仿真模型 二、模塊操作…

系統與賬戶安全

SYS-01&#xff1a;Windows的賬戶安全 安全配置核心原則&#xff1a; 強密碼策略&#xff1a; 通過組策略設置密碼復雜度&#xff1a; # 啟用密碼復雜度要求 secedit /export /cfg secpolicy.inf # 修改文件中的 "PasswordComplexity 1" secedit /configure /db …

COMPUTEX 2025 | 廣和通5G AI MiFi解決方案助力移動寬帶終端邁向AI新未來

隨著5G與AI不斷融合&#xff0c;穩定高速、智能的移動網絡已成為商務、旅行、戶外作業等場景的剛需。廣和通5G AI MiFi方案憑借領先技術與創新設計&#xff0c;重新定義5G移動網絡體驗。 廣和通5G AI MiFi 方案搭載高通 4nm制程QCM4490平臺&#xff0c;融合手機級超低功耗技術…

免費開放試乘體驗!蘇州金龍自動駕駛巴士即將上線陽澄數谷

近日&#xff0c;蘇州自動駕駛巴士線路——陽澄數谷示范線正式上線&#xff0c;即日起向全民免費開放試乘體驗&#xff01; 在蘇州工業園區地鐵3號線倪浜?陽澄數谷站外&#xff0c;一輛輛黑、白配色的小巴正在道路上有條不紊地行駛。與普通公交不同的是&#xff0c;小巴造型奇…

嵌入式軟件架構規范之 - 分層設計

一、規范的核心思想&#xff1a;驅動文件的“獨立性”與“復用性” 該規范的本質是通過分層隔離&#xff0c;實現驅動代碼的高復用性、低耦合性&#xff0c;確保驅動模塊僅關注“硬件操作邏輯”&#xff0c;不依賴上層業務或下層硬件接口的具體實現細節。其核心要求包括&#…

PyQt5繪圖全攻略:QPainter、QPen、QBrush與QPixmap詳解

摘要&#xff1a;掌握PyQt5繪圖核心控件&#xff0c;輕松實現窗體繪圖、文字渲染、幾何圖形繪制及圖像加載。本文附帶完整代碼示例與效果圖&#xff0c;助你快速上手GUI圖形開發。 繪圖基礎&#xff1a;為什么需要這些控件&#xff1f; 在GUI開發中&#xff0c;繪圖功能是數據…

C++學習:六個月從基礎到就業——多線程編程:std::thread基礎

C學習&#xff1a;六個月從基礎到就業——多線程編程&#xff1a;std::thread基礎 本文是我C學習之旅系列的第五十四篇技術文章&#xff0c;也是第四階段"并發與高級主題"的第一篇&#xff0c;介紹C11引入的多線程編程基礎知識。查看完整系列目錄了解更多內容。 引言…

【計算機網絡】TCP如何保障傳輸可靠性_筆記

文章目錄 一、傳輸可靠性的6方面保障二、分段機制三、超時重傳機制四、流量控制五、擁塞控制 提示&#xff1a;以下是本篇文章正文內容&#xff0c;下面案例可供參考 源網站 按TCP/IP 4層體系&#xff0c;TCP位于傳輸層&#xff0c;為應用層提供服務 一、傳輸可靠性的6方面保障…

2025年保姆級教程:Powershell命令補全、主題美化、文件夾美化及Git擴展

文章目錄 1. 美化 Powershell 緣起2. 安裝 oh-my-posh 和 posh-git3. 安裝文件夾美化主題【可選】 1. 美化 Powershell 緣起 背景&#xff1a;用了 N 年的 Windows 系統突然覺得命令行實在太難用了&#xff0c;沒有補全功能、界面也不美觀。所以&#xff0c;我決定改變它。但是…

基于Mongodb的分布式文件存儲實現

分布式文件存儲的方案有很多&#xff0c;今天分享一個基于mongodb數據庫來實現文件的存儲&#xff0c;mongodb支持分布式部署&#xff0c;以此來實現文件的分布式存儲。 基于 MongoDB GridFS 的分布式文件存儲實現&#xff1a;從原理到實戰 一、引言 當系統存在大量的圖片、…

【Linux】Linux安裝并配置Redis

目錄 1.安裝 2.啟動服務 3.配置 3.1.綁定地址 3.2.保護模式 3.3.持久化選項 3.3.1.RDB 持久化 3.3.2.AOF 持久化 3.3.3.如何選擇 1.安裝 Redis 可以從默認的 CentOS 軟件倉庫中安裝。運行以下命令來安裝 Redis sudo dnf install redis -y 響應如下 2.啟動服務 安裝完成后&…

python-數據可視化(大數據、數據分析、可視化圖像、HTML頁面)

通過 Python 讀取 XLS 、CSV文件中的數據&#xff0c;對數據進行處理&#xff0c;然后生成包含柱狀圖、扇形圖和折線圖的 HTML 報告。這個方案使用了 pandas 處理數據&#xff0c;matplotlib 生成圖表&#xff0c;并將圖表嵌入到 HTML 頁面中。 1.XSL文件生成可視化圖像、生成h…