C 單鏈表基本操作分析與實現

2021-07-11 15:01:45 字數 2099 閱讀 2518

鍊錶

鍊錶是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點(鍊錶中每乙個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。 相比於線性表順序結構,鍊錶比較方便插入和刪除操作。

建立頭節點

手動new乙個新的node,將node的next置為null即可。

head = new node(0);head->next = null;

從頭插入乙個新的節點

手動new出乙個新的節點p,使p的next的指向head->next所指向的位址,然後將head->next從新指向p即可。

node * p = new node(int); p->next = head->next; head->next = p;

鍊錶反轉

定義三個臨時節點指向頭結點之後的第1個節點p,第2個節點q和第3個節點m。將p->next置為空,然後將q->next = p,然後將p向後移動乙個節點,即p = q,最後將q向後移動乙個節點,即q = m,最後把m向後移動乙個節點,即m = m->next;依此類推直到m等於null,然後將q->next = p,最後將head->next指向q(即目前第乙個節點疑,也就是原本最後的乙個節點)。

通過三個節點達到從頭開始逐個逆序的目的。反轉**請參考後面的完整**。

//

// list.cpp

// list

//// created by scandy_yuan on 13-1-6.

//#include

using

namespace

std;

class list

~list()

//建立頭結點

void create_list();

//插入函式

void insert(const

int& d);

//在指定位置插入

void insert_pos(const

int& d,const

int& d1);

//刪除指定資料的節點

void erase(const

int& d);

//修改指定資料

void updata(const

int& d,const

int& d1);

//反轉鍊錶函式

void reverse();

//列印

void print();

private:

//節點結構

struct node

};node * head;//頭節點

//清理鍊錶函式

void clear()

}//查詢資料d的上乙個節點位置的函式

//為了方便後面刪除操作

node* find(const

int& d)

return p;

}};//建立頭結點

void list::create_list()

//從頭插入乙個節點

void list::insert(const

int& d)

//列印函式

void list::print()

}//在d位置之前插入d1

void list::insert_pos(const

int& d,const

int& d1)

//刪除

void list::erase(const

int& d)

//修改指定資料

void list::updata(const

int& d,const

int& d1)

//反轉鍊錶

void list::reverse()

//將最後乙個節點逆序

q->next = p;

//將頭從新指向新的的第1個節點(之前的最後乙個節點)

head ->next = q;

}int main(int argc, const

char * argv)

C 單鏈表基本操作分析與實現

鍊錶 鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點 鍊錶中每乙個元素稱為結點 組成,結點可以在執行時動態生成。每個結點包括兩個部分 乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。相比於線性表順序結構,鍊錶比較...

單鏈表及基本操作與實現

單鏈表的基本操作及基本實現如下 include stdio.h include stdlib.h typedef int elemtype typedef struct lnodelnode,linklist linklist initlist linklist l 初始化鍊錶 bool listi...

C 實現單鏈表的基本操作

結點類 關鍵處在c語言中用指標來指向下乙個節點,c 是物件導向的,用節點類的乙個屬性 next屬性 來指向下乙個節點物件 public class linknode set private linknodenext public linknodenext set endregion public l...