入門計算機的粗略學習 Day16

2021-10-10 15:06:15 字數 2160 閱讀 1451

我們已經講過了棧和佇列,兩種資料結構。

在程式語言中,還有幾種更常用的資料結構。

線性的順序儲存資料,而是在每乙個節點裡存到下乙個節點的指標(pointer)或者引用。由於不必須按順序儲存,鍊錶的插入和刪除操作可以達到o(1)的複雜度。本文將講解單向鍊錶和雙向鍊錶,其中雙向鍊錶會給出部分關鍵**實現。

class node
單向鍊錶(單鏈表)是鍊錶的一種,它由節點組成,每個節點都包含下乙個節點的指標,下圖就是乙個單鏈表,表頭為空,表頭的後繼節點是"結點10"(資料為10的結點),"節點10"的後繼結點是"節點20"(資料為10的結點),...

我們看看單鏈表刪除節點的操作,比如說下面這個單鏈表中我們要刪除"節點30"。

刪除之前:"節點20" 的後繼節點為"節點30",而"節點30" 的後繼節點為"節點40"。

刪除之後:"節點20" 的後繼節點為"節點40"。

我們再來看看單鏈表新增節點的操作,比如說下面這個單鏈表中我們在"節點10"與"節點20"之間新增"節點15"

新增之前:"節點10" 的後繼節點為"節點20"。

新增之後:"節點10" 的後繼節點為"節點15",而"節點15" 的後繼節點為"節點20"。

雙向鍊錶(雙鏈表)是鍊錶的一種。和單鏈表一樣,雙鏈表也是由節點組成,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。一般我們都構造雙向迴圈鍊錶。

雙鏈表的示意圖如下:

表頭為空,表頭的後繼節點為"節點10"(資料為10的節點);"節點10"的後繼節點是"節點20"(資料為10的節點),"節點20"的前繼節點是"節點10";"節點20"的後繼節點是"節點30","節點30"的前繼節點是"節點20";...;末尾節點的後繼節點是表頭。

不難看出,雙向鍊錶的節點定義可以用乙個下面的結構體表示:

//雙向鍊錶節點結構

typedef struct dlink_node

node;

我們看看雙向鍊錶刪除節點的操作,比如說下面這個單鏈表中我們要刪除"節點30"。

刪除之前:"節點20"的後繼節點為"節點30","節點30" 的前繼節點為"節點20"。"節點30"的後繼節點為"節點40","節點40" 的前繼節點為"節點30"。

刪除之後:"節點20"的後繼節點為"節點40","節點40" 的前繼節點為"節點20"。

雙向鍊錶刪除節點的關鍵**如下:

//刪除節點pindex

pindex->next->prev = pindex->prev;

pindex->prev->next = pindex->next;

free(pindex); //注意釋放節點

我們再來看看雙向鍊錶新增節點的操作,比如說下面這個雙向鍊錶在"節點10"與"節點20"之間新增"節點15"

新增之前:"節點10"的後繼節點為"節點20","節點20" 的前繼節點為"節點10"。

新增之後:"節點10"的後繼節點為"節點15","節點15" 的前繼節點為"節點10"。"節點15"的後繼節點為"節點20","節點20" 的前繼節點為"節點15"。

入門計算機的粗略學習 Day6

概念介紹 uml圖是產品必修課之一,可以幫助程式設計師梳理業務模型和業務流程,幫助程式設計師快速理解業務關係。一般至少需要掌握一種結構型uml圖和一種行為型uml圖。在軟體領域,影響力最強的建模工具當屬統一建模語言 unifiedmodeling language,uml 了。1997年,物件管理組...

Day02 計算機入門

複製 cltr c 貼上 cltr v 剪下 cltr x 撤銷 cltr z 全選 cltr a 儲存 cltr s 關閉當前視窗 alt f4 永久刪除檔案 shift delete 開啟命令視窗 win r 開啟我的電腦 win e 開啟任務管理器 ctrl shift esc 任務視角 wi...

Day01 計算機入門

語言是互相溝通的介質 計算機語言則是程式設計師和計算機互相溝通的介質程式設計是程式設計師希望計算機執行的命令用程式語言翻譯出來讓計算機執行的操作檔案 這個檔案稱為軟體讓計算機按一定邏輯去工作,讓計算機取代人力1.控制器 2.運算器 3.儲存器 1.記憶體 優點訪問速度快 缺點斷電資料丟失 2.外存 ...