資料結構 單鏈表基本操作 C 實現

2021-10-07 18:39:55 字數 4020 閱讀 9175

**主體使用結構體+類+模板進行實現。

1.linklist.h

#pragma once

#include

using

namespace std;

template

<

class

t>

struct node //結點結構

node

(t e, node *next =

null)}

;template

<

class

t>

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

intlength()

const

;//求表長等不改變資料值,只是讀取建議使用常函式const末尾標識

bool

isempty()

const

;//判空操作

void

clear()

;//清空操作

void

output()

const

;//輸出鍊錶

bool

search

(const t&x)

const

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

};

3單鏈表.cpp
//單鏈表.cpp

#include

"linklist.h"

#include

using

namespace std;

template

<

class

t>

linklist

::linklist()

template

<

class

t>

linklist

::linklist

(t data,

int msize)

}template

<

class

t>

bool linklist

::insert

(int pos, t&x)

else

}return flag;

}template

<

class

t>

bool linklist

::remove

(int pos, t&x)

//刪除元素

else

}return flag;

}template

<

class

t>

bool linklist

::replace

(int pos, t&x)

//修改元素

else

}return flag;

}template

<

class

t>

int linklist

::length()

const

//求表長

return cont;

}template

<

class

t>

void linklist

::clear()

head =

null;}

}template

<

class

t>

bool linklist

::isempty()

const

//判空

template

<

class

t>

bool linklist

::search

(const t&x)

const

//查詢

else

}return flag;

}template

<

class

t>

void linklist

::output()

const

//輸出鍊錶

} cout << endl;

}

3.測試.cpp
//測試.cpp

#include

"單鏈表.cpp"

#include

void

menu()

//模擬選單選項

const

int n =20;

intmain()

else

l.output()

;break

;case2:

//插入

int pos, elem;

cout <<

"請輸入插入位置:"

; cin >> pos;

cout <<

"插入元素:"

; cin >> elem;

if(l.

insert

(pos, elem)

)//插入成功

cout <<

"在第"

<< pos <<

"個元素前成功插入"

<< elem << endl;

else

//插入失敗

cout <<

"插入位置不合法!"

<< endl;

break

;case3:

//刪除

cout <<

"請輸入刪除位置:"

; cin >> pos;

int x;

if(l.

remove

(pos, x)

)//刪除單鏈表的第pos個元素

cout <<

"單鏈表的第"

<< pos <<

"個元素"

<< x <<

"已被刪除。"

<< endl;

else

cout <<

"刪除位置不合法!"

<< endl;

break

;case4:

//銷毀鍊錶

char ok;

cout <<

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

<< endl;

cin >> ok;

if(ok ==

'y'|| ok ==

'y') l.

clear()

;break

;case5:

//查詢

cout <<

"請輸入查詢元素:"

; cin >> elem;

if(l.

search

(elem)

) cout <<

"查詢成功!"

<< endl;

else

cout <<

"查詢失敗!"

<< endl;

break

;case0:

//退出

exit(0

);default

: cout <<

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

}return0;

}

4.執行截圖

《資料結構》單鏈表基本操作實現

define ok 1 define error 1 typedef int elemtype typedef int status typedef struct node lnode,linklist 構造空表 status initlist linklist l void creatlist l...

資料結構 單鏈表基本操作實現 C語言

個人複習過程中的回顧,有問題請與我交流。純c語言版,未用到c 的引用 單鏈表 含頭結點 include include define elemtype int typedef int elemtype typedef struct lnodelnode,linklist linklist creat...

資料結構 單鏈表基本操作

實現單鏈表的初始化,頭插法建表,尾插法建表,查詢元素,插入元素,刪除元素等功能 include using namespace std define elemtype char typedef struct node node,linklist 初始化單鏈表 void initlist linkli...