好久沒有看資料結構,打算最經好好複習一下資料結構,那就從頭開始看起,這次先總結一下線性表這一章的有關操作,雖然思想簡單,但是也不能輕視。
一、頭插法
基本思想:首先申請乙個頭結點,並將頭結點指標域置為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...