資料結構 C 實現帶頭節點單鏈表

2021-10-08 11:34:22 字數 3025 閱讀 4600

線性表的鏈式儲存又稱單鏈表。

特點:

不需要使用位址連續的儲存單元

插入和刪除操作不需要移動元素

非隨機訪問

附加指標域,存在浪費儲存空間的缺點

/*

linklist.h

*/#pragma once

#include

using

namespace std;

/*節點結構體

*/template

<

class

datatype

>

struct node

node

(datatype data)};

template

<

class

datatype

>

class

linklist

;

/*

linklist.cpp

*/#include

"linklist.h"

// template

<

class

datatype

>

linklist

::linklist()

// template

<

class

datatype

>

linklist::~

linklist()

p =null

;delete q;

head =

null

;delete p;

delete head;

}//返回鍊錶長度

template

<

class

datatype

>

int linklist

::length()

// 按值查詢第一次的出現位序

template

<

class

datatype

>

int linklist

::locateelement

(datatype x)

i++; p = p-

>next;

}// 如果鍊錶中不含該資料,返回0

return0;

}// 按位查詢

template

<

class

datatype

>

datatype linklist

::valueofindex

(int i)

// 遍歷查詢指定節點

node

*p = head;

while

(i--

)return p-

>data;

}// 尾插法

template

<

class

datatype

>

void linklist

::tailinsert

(datatype data)

// 尾節點指向新節點

p->next = node;

// length++

;return;}

// 頭插法

template

<

class

datatype

>

void linklist

::headinsert

(datatype data)

// 指定位序處插入資料

template

<

class

datatype

>

bool linklist

::insert

(datatype data,

int i)

// 尋找前驅指標

node

*p = head;

for(

int j =

1; j < i; j++

)// 構造新節點

node

*node =

new node

(data)

;// 新節點的指標指向下乙個節點

node-

>next = p-

>next;

// 前驅指標指向新節點

p->next = node;

// length++

;return

true;}

// 判空

template

<

class

datatype

>

bool linklist

::isempty()

// 按位刪除

template

<

class

datatype

>

bool linklist

::deletebyindex

(int i)

// 尋找前驅指標

node

*p = head;

for(

int j =

1; j < i; j++

)// 取出即將刪除的節點

node

*temp = p-

>next;

// 前驅指標指向要刪除的節點的下乙個節點

p->next = temp-

>next;

// 釋放指標

delete temp;

// length--

;return

true;}

// 遍歷輸出

template

<

class

datatype

>

void linklist

::print()

cout << endl;

}

資料結構之單鏈表(帶頭節點)

今天來聊聊單鏈表。單鏈表是以節點存的鏈式結構,分為帶頭節點和不帶頭節點的單鏈表。單鏈表中的節點包括data域和next域,data域儲存元素的值,next域則儲存下乙個節點的位址。單鏈表中的各個節點在記憶體中不一定是連續儲存的,儲存形式如下圖所示 從圖中可以看出,單鏈表中的各個節點並不是連續儲存的。...

資料結構 帶頭節點的單鏈表的表示和實現

includeusing namespace std typedef struct lnode lnode,linklist 初始化鍊錶,頭節點資料域存放鍊錶長度 bool initlist linklist l 建立鍊錶 尾插法 void createlist linklist l r next ...

資料結構 帶頭結點的單鏈表

比較坑爹的基礎啊,大把時間浪費在建構函式上,建構函式 出生決定命運!自己解決的bug,感覺還不錯。其實程式的核心是演算法,演算法建立在資料結構的基礎之上。大部分的程式設計師現在學的基本都是規則,而不是創造。但掌握了規則,也能創造很多財富。重新鞏固我弱爆了的資料結構,沒敲完資料結構的程式設計師不是好領...