資料結構 鍊錶

2021-07-23 22:08:43 字數 2788 閱讀 3565

#ifndef link_h

#define link_h

#include#include#includeusing namespace std;

templatestruct linknode //-----------------------------鍊錶結點類定義

linknode(const t&item,linknode*ptr=null)//初始化

};templateclass list //單鏈錶類定義,不用繼承也可實現

//----------------建構函式

list(const t&x)//----建構函式

list(list&l);//----------------複製建構函式

~list()

void makeempty();//----------------將鍊錶置為空表

int length()const;//---------------計算鍊錶長度

linknode*search(t x);//---------------搜尋含資料x的元素

linknode*locate(int i);//-------------搜尋第i個函式位址

void searchfromlast(int i);

bool getdata(int i,t&x);//-------------取出第i個函式位址

void setdata(int i,t&x);//-------------修改第i個函式位址

bool insert(int i,t&x);

bool remove(int i,t&x);

bool isjoined(listl,listr);

bool isempty()const

bool isfull()const

void input(int a,int n);

void max(t &x);

void min(t &x);

void output();

void removerepition();

void reverseprint(linknode*t);//逆向輸出

void sort(); //插入排序法

void directsort(); //直接排序法

bool iscircle();//判斷乙個單鏈表是否存在環鏈

void reverse();//原地翻轉鍊錶

void reverse(linknode*t); //遞迴實現

void reversetwo();//間接翻轉鍊錶

list&operator=(list&l);//-------------過載函式:賦值

protected:

linknode*first;

};templatelist::list(list&l)

destptr->link=null;

};templatevoid list::makeempty()

};templateint list::length()const

return count;

};templatelinknode*list::search(t x)

return current;

};templatelinknode*list::locate(int i)

return current;

};

templatevoid list::max(t &data)

};

templatevoid list::min(t &data)

};

templatebool list::getdata(int i,t&x) };

templatevoid list::setdata(int i,t&x)

;

templatebool list::insert(int i,t&x)

; templatebool list::remove(int i,t&x)

; templatevoid list::output()

cout};

templatevoid list::input(int a,int n)

};

templatelist& list::operator=(list&l)

destptr->link=null;

return *this;

};templatevoid list::directsort()

} }

};templatebool list::iscircle()

cout<<"the last "bool list::isjoined(listl,listr)//如果兩個鍊錶相交,那麼他們的最後結點相同

while(q->link!=null)

if(p!=q)

if(p!=null)cout<<"相交點為: "q=r.gethead()->link;

while(p!=q)

if(p!=null)cout<<"相交點為: "};templatevoid list::reverse(linknode*t)//用遞迴實現翻轉

;templatevoid list::removerepition()

}templatevoid list::reversetwo() //插入反轉

}#endif

資料結構 鍊錶

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

資料結構 鍊錶

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

資料結構 鍊錶

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