單鏈表的相關演算法

2021-07-09 12:04:15 字數 1087 閱讀 1156

好久沒有看資料結構,打算最經好好複習一下資料結構,那就從頭開始看起,這次先總結一下線性表這一章的有關操作,雖然思想簡單,但是也不能輕視。

一、頭插法

基本思想:首先申請乙個頭結點,並將頭結點指標域置為null,每讀入乙個資料就申請乙個節點,並插入到鍊錶的頭結點之後。注意在鍊錶中的資料與讀入的資料順序相反。

核心**:

linklist create_list()

return h;

}

二、尾插法

基本思想:首先申請乙個頭結點,並將頭結點指標域置為null,頭指標h和尾指標r都指向頭結點,讀入資料,如果不是結束標誌,則申請結點插入到r結點之後,並使得r指向新的結點。

核心**:

linklist create_list()

return h;

}

三、插入

前面說了頭插法和尾插法,這裡再說插入大家應該都知道了,但是還是再說一下吧,加深理解。

重要**:

p->next = s->next;

s->next = p;

就是一定要記住,要先儲存前乙個節點 s 的指向, 如果先將p節點鏈在s節點的尾部,那麼s節點的下乙個指向就會丟失。

四、刪除

p指向要刪除的節點,首先找到*p的前驅節點*q,然後完成刪除操作。

重要**:

q->next = p->next;

free(p);

即,讓他的前驅節點指向他的後面的節點。要注意的而是找他前乙個的節點。

五、倒置

倒置就是將鍊錶中的順序反過來。

基本思想:依次取原鍊錶中的每個節點,將其作為第乙個節點插入到新鍊錶中。新煉表中採用頭插法。

重要**:

void reverse(linklist h)

}

接下來簡單的說說靜態鍊錶的概念

靜態鍊錶是用陣列實現的,每個資料元素除了儲存資料資訊外,還儲存邏輯相鄰的乙個元素在陣列中的位置。也就是說靜態鍊錶雖然是用陣列實現的,但是其邏輯上相鄰的元素不一定在物理上相鄰。

單鏈表相關演算法

include include using namespace std typedef int elemtype typedef struct node nodetype nodetype create s next null return head void dis nodetype head w...

單鏈表的相關操作

1.單鏈表的反轉 在這裡實現一種最簡單的鍊錶反轉的方法,遞迴反轉,在反轉當前借點之前先反轉後續的節點,這樣層層深入直到最後乙個子節點。package com.weibo.linkedlist public class reversenode public listnodes reverse list...

單鏈表的相關操作

最近複習資料結構的時候,複習到了鍊錶,把王道上的關於鍊錶的基本操作敲了一遍,當是複習鞏固,記錄在此,沒準以後能用得到。結點型別 typedef struct lnode lnode,linklist 前插法建立單鏈表 linklist createlist1 linklist l while val...