c 實驗3 鏈式儲存線性表

2022-09-13 19:18:08 字數 3039 閱讀 9861

(1)單鏈表儲存結構類的定義:

#include using

namespace

std;

template

class

linlist

;

(2)初始化帶頭結點空單鏈表建構函式實現

template linlist 

::linlist() //

建構函式

(3)利用陣列初始化帶頭結點的單鏈表建構函式實現

template linlist 

::linlist(t a,int

i)}

(4)在帶頭結點單鏈表的第i個位置前插入元素e演算法

template 

void linlist::insert(const t& e,int i); //

插入 listnode

*p=index(i-1); //

p為指向第i-1個結點的指標

//構造新結點q的data域值為item,next域值為p->next

listnode *q=new listnode (e,p->next);

p->next=q; //

新結點插入第i個結點前

size++; //

元素個數加1

}

(5)在帶頭結點單鏈表中刪除第i個元素演算法

template t linlist

::delete(int i,t& e); //

刪除

if(i<0||i>size-1

)

listnode

*s,*p=index(i-1); //

p為指向第i-1個結點指標

s=p->next; //

s指向第i個結點

p->next=p->next->next; //

第i個結點脫鏈

t x=s->data;

e=x;

delete s; //

釋放第i個結點空間

size--; //

結點個數減1

return e; //

返回第i個結點的data域值

}

(6)遍歷單鏈表元素演算法

template 

void linlist::getall()

cout

<

}

(7)求單鏈表表長演算法。

template 

int linlist::size(void) const

(8)判單鏈表表空演算法

template 

bool linlist::isnull()

else

}

(9)獲得單鏈表中第i個結點的值演算法

template t linlist

::getdata(int

i) listnode

*p=index(i)

return p->data;

}

主函式呼叫

(1)利用陣列初始化帶頭結點的單迴圈鍊錶建構函式實現

template circlelist::circlelist(t a,

int n) //

建立方式大同小異,唯一的區別就是建立的最後將尾結點指向頭結點 }}

(2)在帶頭結點單迴圈鍊錶的第i個位置前插入元素e演算法

template 

void circlelist::insertnode(int

n,t data)

(3)在帶頭結點單迴圈鍊錶中刪除第i個元素演算法

template 

void circlelist::deletenode(int i) //

刪除i位置的結點

else

}

template

void sort1(int c,int d,t a,t b,linlistli)

if(bmin==d)

if(a[amin]>b[bmin])

else

if(a[amin]

else

}li.getall();

}

線性表的鏈式儲存

此方法雖然簡單,但是真寫起來太複雜了。線性表的鏈式儲存 include include struct lnode 線性表的初始化 void init l lnode l 線性表的後插建立 void create l1 lnode l n next null 線性表的後插建立 void create ...

線性表的鏈式儲存

引言 一 單鏈表 相較於順序儲存用連續的儲存單元儲存,單鏈表採用鏈式儲存結構,用一組位址任意的儲存單元儲存資料元素。特點 1 儲存單元可以是不連續的,即邏輯結構與物理結構可以不相同 2 元素用結點儲存,每個結點由元素值和下乙個元素的位址構成 3 單鏈表是由每個結點的指標域按照邏輯次序相互連線而成的。...

線性表的鏈式儲存

include include include typedef int elemtype typedef struct nodenode,nodeptr 鍊錶節點 typedef struct listlist,listptr 鍊錶,頭結點為0位置 listptr initlist 初始化鍊錶 vo...