線性鍊錶的順序儲存結構基本實現(C )

2021-10-05 10:29:03 字數 4136 閱讀 8206

又有一段時間沒有更新部落格了。在家久了變的異常敏感,什麼都會去想,想多了又會自閉。不管咋樣,生活還在繼續,無法逃避。該面對的還是要直面,就希望安穩畢業,順利入職。

開始資料結構與c++的混合訓練模式。看別人的**寫**,好像啥都懂。拿開自己寫,好像啥都不知道。先從最基本的線性鍊錶的順序儲存結構學起吧。先上**(包含如下函式功能):

//使用陣列儲存資料,建立了linearlist類,並用類模板實現

linearlist()

;//預設建構函式

linearlist

(t *s)

;//傳入陣列作為初始化值

linearlist

(const linearlist & lt)

;//複製建構函式

bool

listempty()

const

;//判斷列表是否為空

bool

listfull()

const

;//判斷列表是否裝滿

t getelem

(int i)

;//得到下標為i的元素

bool

locateelem

( t e,

int&l)

const

;//列表中是否有元素e,如果有返回其下標l

bool

listinsert

(int i, t e)

;//在下標i處插入元素e,並返回是否插入成功

bool

listdelete

(int i, t &e)

;//刪除下標i處的元素,並返回是否刪除成功

const

intlistlength()

;//返回列表的長度

void

show()

const

;//展示列表的值

linearlist &

operator=(

const linearlist & lt)

;//賦值函式

linearlist &

operator+(

const linearlist & lt1)

;//加法運算子過載

實現過程中遇到的幾個問題需要注意:

1、類模板必須與特定的模板例項化請求一起使用,即要放在乙個檔案下,不能宣告和定義分別放在兩個檔案裡;

2、陣列型別不能陣列間直接賦值,需要迴圈賦值;

3、模板函式在定義時都需要之前加上template

<

typename type>並且要在函式名處也要定義引數;

有關線性鍊錶的順序儲存結構知識點,就不再贅述。我是對照《大話資料結構》學習的,目前為止感覺講的很不錯,淺入深出。此外,實現方法肯定有更加簡單或者需要優化的地方,歡迎批評指正。

線性鍊錶的順序儲存結構標頭檔案

#pragma once

#ifndef linearlist_h_

#define linearlist_h_

#include

using

namespace std;

#define maxsize 100

template

<

typename t>

class

linearlist

;template

<

typename t>

linearlist

::linearlist()

template

<

typename t>

linearlist

::linearlist

(t *s)

template

<

typename t>

linearlist

::linearlist

(const linearlist & lt)

template

<

typename t>

bool linearlist

::listempty()

const

template

<

typename t>

bool linearlist

::listfull()

const

template

<

typename t>

t linearlist

::getelem

(int i)

template

<

typename t>

bool linearlist

::locateelem

(t e,

int&l)

const

return

false;}

template

<

typename t>

bool linearlist

::listinsert

(int i, t e)

template

<

typename t>

bool linearlist

::listdelete

(int i, t &e)

length -=1

;}template

<

typename t>

const

int linearlist

::listlength()

template

<

typename t>

void linearlist

::show()

const

template

<

typename t>

linearlist

& linearlist

::operator=(

const linearlist

& lt)

template

<

typename t>

linearlist

&linearlist

::operator+(

const linearlist

& lt1)

#endif

// !linearlist

線性鍊錶的順序儲存結構使用示例

#include

#include

"linearlist.h"

#include

#include

using

namespace std;

void

main()

int lac;

if(data2.

locateelem

('s'

, lac)

)else

cout <<

"no find!"

<< endl;

linearlist<

char

>

data3

(data2)

; cout <<

"data3 = "

; data3.

show()

; linearlist<

char

> data4;

data4 = data3;

cout <<

"data4 = "

; data4.

show()

; linearlist<

char

> data5;

data5 = data3 + data4;

data5.

show()

;while

(!data2.

listempty()

)else

cout <<

"delete falied! \n"

; cout <<

"data2 = "

; data2.

show()

;}}

線性表順序儲存結構基本操作

線性表 線性表 list 每個元素型別均為datatype。operation initlist l 初始化操作,建立乙個空的線性表l。listempty l 若線性表為空,返回 true 否則返回 false。clearlist l 將線性表清空。getelem l,i,e 將線性表 l中的第 i...

線性表的順序儲存 線性表的順序儲存結構

1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...

線性順序表基本運算(順序儲存)

include include define maxsize 30 typedef struct seqlist void init list seqlist l 線性表順序表初始化 int insert seqlist l,int i,int elem 線性表順序表插入 int delet lis...