單鏈表的模板類 C

2022-09-16 19:09:18 字數 3023 閱讀 4097

/*header.h*/

#pragma once

#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* getrear()const;//返回尾部指標

void inputhead(t head);//頭插

void inputrear(t rear);//尾插

void output();//將鍊錶列印出來

bool isempty()const

void sort();//排序

bool insert(int i, t& x);//在第i個位置插入x

bool remove(int i, t& x);//刪除第i個元素,將第i個元素的data賦值給x

t *getdata(int i);//返回第i個元素的data位址

void setdata(int i, t& x);//將第i個元素的data值更改為x

linknode*search(t x);//查詢鍊錶中第乙個含有data為x的元素,返回x節點指標

linknode*locate(int i);//返回第i個元素的指標

list& operator=(list& l);//符號過載,賦值

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

desptr->data = srcptr->data;

}return *this;

}templatelinknode* list::locate(int i)//找第i個元素,找到返回位址,找不到返回頭結點位址

return tmp;

} return this->first;

}templatelinknode* list::search(t x)

if(tmp->data==x)

return tmp;

} return this->first;

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

tmp->data = x; }}

templatet* list::getdata(int i)

return &tmp->data; }}

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

p = tmp->next;

tmp->next = p->next;

x = p->data;

delete p;

} else

--this->first->data;

return true;

} return false;

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

else if(i == 1)

int j = i-1;

linknode*tmp = new linknode, *p = this->first;

tmp->data = x;

while(j)

tmp->next = p->next;

p->next = tmp;

++this->first->data;

return true;

} else

return false;

}templatevoid list::sort()//排序有兩類方法,一種是改變指標指向的,一種是僅為元素data排序,而不改變指標指向

--j;

}--i;

} }}templatevoid list::inputhead(t head)

else

tmp->data = head;

++this->first->data;

}templatevoid list::inputrear(t rear)

templatevoid list::output()

cout<

desptr->next = null;

}templatevoid list::makeempty()

}templatelinknode* list::getrear()const

/*templateint list::length()const

};*/

乙個含有頭結點的單鏈表,煉表頭節點的資料與儲存鍊錶長度。

順序表適合隨機讀,鍊錶適合隨機寫,隨機刪除。

/*main.cpp*/

#include"header.h"

int main()

{ const int o = 10;

listl(0),m;

for(int i=100; i<=110; ++i)

l.inputhead(i);

//for(int i=0; i<=10; ++i)

// l.inputrear(i);

l.output();

int i = 2111;

l.insert(1, i);

l.output();

l.sort();

l.output();

l.remove(1, i);

cout<

執行結果如下

C 模板類 單鏈表

c 作業,用模板類寫鍊錶,完成了對基本的單鏈表的插入,刪除等。include using namespace std templatestruct node templateclass linkedlist linkedlist t find int index 返回索引對應的值 void remo...

單鏈表 模板類

include using namespace std 宣告單鏈錶類模板 為了說明友元類 template class list 定義鍊錶結點類模板 template class listnode listnode type item data item next null public 成員函式 ...

單鏈表模板類

鍊錶是最基本的資料結構,是一組不連續的資料的集合,鍊錶中每個結點除包含結點元素外,還包含下一結點的位址。對鍊錶可以實現插入 刪除 查詢以及顯示等操作。單鏈表模板類list.h ifndef list h define list h include using namespace std templa...