資料結構 鍊錶

2021-10-19 08:16:57 字數 4544 閱讀 7580

#include

using

namespace std;

typedef

int dt;

struct node

node

(const dt& item, node* ptr =

null)}

;class

list

//預設建構函式

list

(const dt& x)

list

(const list& ln)

;//拷貝建構函式

~list()

;//析構函式

void

makeempty()

;bool

insert

(int

, dt&);

//向鍊錶第i個位置新增資料

bool

remove

(int i, dt& x)

;//移除某個結點

bool

isempty()

const

//判斷是否為空

intsize()

const

//鍊錶長度

void

show()

;//顯示鍊錶

node*

gethead()

const

node*

search

(dt)

;//查詢結點

node*

locate

(int

)const

;//定位

bool

getdate

(int i, dt& x)

const

;//獲取資料

void

setdate

(int i, dt& x)

;//設定資料

void

output()

;void

create

(int n)

;protected

: node* first;

int length;};

//拷貝建構函式

list::

list

(const list& ln)

destptr-

>link =

null;}

//置空

void list::

makeempty()

}//查詢

node* list::

search

(dt x)

return p;

}///定位

node* list::

locate

(int i)

const

return p;

}//獲取資料

bool list::

getdate

(int i, dt& x)

const

}//設定資料

void list::

setdate

(int i, dt& x)

//插入

bool list::

insert

(int i, dt& x)

newnode-

>link = first;

first = newnode;

}else

newnode-

>link = p-

>link;

p->link = newnode;

} length++

;return1;

}bool list::

remove

(int i, dt& x)

void list::

output()

cout << endl;

}void list::

create

(int n)

node* ptemp =

null

; node* pnew =

null

;this

->length = n;

ptemp =

this

->first;

for(

int i =

0; i < n; i++

) cout <<

"建立完成"

<< endl;

return;}

intmain()

ls1.

output()

; cout << ls1.

size()

<< endl;

}

#include

using

namespace std;

template

<

class

t>

class

node

;template

<

class

t>

class

list;//

//預設建構函式

template

<

typename t>

list

::list()

//拷貝建構函式

template

<

typename t>

list

::list

(const list& ln)

tail-

>next =

nullptr;}

//向鍊錶新增資料

template

<

typename t>

void list

::add

(t e)

//查詢結點

template

<

typename t>

t list

::find

(int index)

if(index >= length)

int x =0;

t data;

node

* p;

if(index < length /2)

}else

}return p-

>data;

}//刪除結點

template

<

typename t>

void list

::remove

(t index)

node

* p = head;

while

(p->next !=

nullptr)}

}//刪除所有結點

template

<

typename t>

void list

::removeall()

node

* p = head-

>next;

while

(p != tail)

head-

>next = tail;

tail-

>prev = head;

length =0;

}//公升序排序

template

<

typename t>

void list

::ascsort()

q = q-

>next;

} p = p-

>next;}}

//判斷是否為空

template

<

typename t>

bool list

::isempty()

//鍊錶長度

template

<

typename t>

int list

::size()

//輸出鍊錶

template

<

typename t>

void list

::show()

node

* p = head-

>next;

while

(p != tail)

std::cout << std::endl;

}//反向輸出鍊錶

template

<

typename t>

void list

::resshow()

std::cout << std::endl;

}//析構函式

template

<

typename t>

list::~

list()

while

(head-

>next !=

nullptr

)delete head;

head =

nullptr;}

intmain()

資料結構 鍊錶

鍊錶 what 就是一張鏈式儲存的表,是一種資料結構,是基礎,所以還是不要想有什麼用。具體呢?在c中就用結構體實現物件描述,然後通過函式來實現各個基本操作 c 則用類來表述,c中的結構體就可以看成c 中的類,然後通過類封裝各個操作步驟。這些操作實現後就需要 來測試,號稱demo,就是main函式裡面...

資料結構 鍊錶

鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶的結點結構 data next data域 存放結點值的資料域 next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 以 結點的序列 ...

資料結構 鍊錶

一般的建立線性鍊錶有兩種 1.正序法 需要三個指標,head作為頭指標,pre作為前乙個指標,cur作為當前指標用來建立空間 2.倒序法,利用指標的插入,只需要兩個指標,不斷的往頭指標後插入新空間,不過插入的越早,離頭指標越遠,也就越後面輸出 1.線性鍊錶的建立及查詢刪除 include inclu...