資料結構 1 1 線性表

2022-06-01 02:09:08 字數 3354 閱讀 2366

//

單鏈表.cpp

#include"

linklist.h

"#include

template

linklist

::linklist()

template

void linklist::clear()

head=null;

}}template

linklist

::linklist(t data, int

msize)

}template

bool linklist::insert(int pos, const t&x)

else

}return

flag;

}template

bool linklist::remove(int pos, t&x)

else

}return

flag;

}template

bool linklist::replace(int pos, const t&x)

else

}return

flag;

}template

int linklist::length()const

return

cont;

}template

bool linklist::isempty() const

template

void linklist::output() const

cout

<

}template

bool linklist::search(const t&x) const

p = p->link;

}return

flag;

}

標頭檔案:

//

linklist.h

#includeusing

namespace

std;

template

struct node //

結點結構

node(t e, node *next =null)

};template

class linklist //

帶表頭結點的單鏈錶類

//析構函式

bool insert(int pos, const t&x); //

在單鏈表第pos個元素前插入元素x

bool remove(int pos, t&x); //

刪除單鏈表第pos個元素

bool replace(int pos, const t&x); //

將修改單鏈表第pos個元素為x

int length()const; //

求表長bool isempty() const; //

判空操作

void clear(); //

清空操作

void output() const; //

輸出鍊錶

bool search(const t&x) const;//

查詢元素x在表中是否存在

};

測試**:

//

測試.cpp

#include"

單鏈表.cpp

"#include

void menu()//

模擬選單選項

const

int n = 20

;int

main()

else

l.output();

break

;

case

2: //

插入int

pos, elem;

cout

<< "

請輸入插入位置:";

cin >>pos;

cout

<< "

插入元素:

";

cin >>elem;

if (l.insert(pos, elem)) //

插入成功

cout << "在第"

<< pos << "

個元素前成功插入

"<< elem <

else

//插入失敗

cout << "

插入位置不合法!

"<

break

;

case

3: //

刪除 cout << "

請輸入刪除位置:

"; cin >>pos;

intx;

if (l.remove(pos, x))//

刪除單鏈表的第pos個元素

cout << "

單鏈表的第

"<< pos << "

個元素"

<< x << "

已被刪除。

"<

else

cout

<< "

刪除位置不合法!

"<

break

;

case

4: //

銷毀鍊錶

char

ok; cout

<< "

確定要銷毀鍊錶嗎?(y/n)

"<

cin >>ok;

if (ok == '

y' || ok == 'y'

) l.clear();

break

;

case

5: //

查詢 cout << "

請輸入查詢元素:

";

cin >>elem;

if(l.search(elem))

cout

<< "

查詢成功!

"<

else

cout

<< "

查詢失敗!

"<

break

;

case

0: //

退出 exit(0

);

default

: cout

<< "

您輸入的選項有誤,請重新輸入:";}}

return0;

}

測試結果:

資料結構1 1 線性表

線性表 n個資料元素 a1,a2.an 的有限序列,大小為0的表為空表。前驅 在非空表中我們稱a i 1 是ai前驅。後繼 在非空表中我們稱a i 1 是ai後繼。用一組位址連續的順序儲存單元一次儲存線性表的資料元素。通常使用陣列來實現 插入和刪除最壞情況都需要o n 鍊錶由一系列不必在記憶體中相連...

資料結構(線性表)

1.試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert l,i,b 並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。status insert linklist l,int i,int b 在無頭結點鍊錶l的第 i個元素之前插入元素 belse insert 2.已知線性表中...

資料結構 線性表

參考 一 線性表 順序表 單鏈表 迴圈鍊錶 雙鏈表 順序表 1.表的初始化 void initlist seqlist l 2.求表長 int listlength seqlist l 3.取表中第i個結點 datatype getnode l,i 4.查詢值為x的結點 5.插入 具體演算法描述 v...