鍊錶:
#include
using namespace std;
template
struct node
template
class linklist
public:
linklist()
node* p=new node;
head=p;
p->next=null;
node* push_front(const t &);
node* push_back(const t &);
node* insert(int pos,const t &);
node* pop_front();
node* pop_back();
const t& front();
const t& back();
const t& del(int pos);
void delelm(const t &);
void clear();
int size();
void display();
~linklist()
this->clear();
private:
node* head;
在鍊錶的前邊插入資料
返回型別:node* 返回插入資料的位置指標
const t &e :插入的資料
template
node*linklist::push_front(const t & e)
node* p=new node;
head->date=e;
node* q=head;
p->next=head;
head=p;
return q;
在鍊錶的最後乙個位置插入資料
返回型別:node* 返回插入資料的位置指標
const t &e :插入的資料
template
node*linklist::push_back(const t & e)
node*p=new node;
p->date=e;
p->next=null;
node* q=head;
node* k=null;
while(q)
k=q;
q=q->next;
k->next=p;
return p;
刪除鍊錶的第乙個資料
返回型別:node* 返回刪除資料的後乙個位置指標
template
node*linklist::pop_front()
if(!head->next)
cout<<"鍊錶為空,pop_front失敗!"else
node*p=head->next;
head->next=p->next;
delete p;
return head->next;
刪除鍊錶的最後乙個資料
返回型別:node* 返回刪除資料的前乙個位置指標
template
node*linklist::pop_back()
if(!head->next)
cout<<"鍊錶為空,pop_back失敗!"else
node* p=head->next;
node* q=null;
while(p->next)
q=p;
p=p->next;
q->next=null;
delete p;
return q;
返回鍊錶的第乙個資料
返回型別:const t & 返回鍊錶的第乙個資料的引用
template
const t & linklist::front()
if(!head->next)
cout<<"鍊錶為空,front失敗!"else
return head->next->date;
返回鍊錶的最後乙個資料
返回型別:const t & 返回鍊錶的最後乙個資料的引用
template
const t & linklist::back()
if(!head->next)
cout<<"鍊錶為空,back失敗!"else
node* p=head->next;
node* q=null;
while(p)
q=p;
p=p->next;
return q->date;
在鍊錶的任意位置插入資料
返回型別:node* 返回插入的資料的指標位置
int pos :插入的資料的位置
const t & e:插入的資料
template
node*linklist::insert(int pos,const t &e)
if(!head->next)
cout<<"鍊錶為空,insert失敗!"else if(pos>this->size())
cout<<"pos位置超出鍊錶長度,insert失敗!"else if(pos<0)
cout<<"pos位置不存在,insert失敗!"else
int i=1;
node* p=head->next;
node* q=null;
while(iq=p;
p=p->next;
i++;
node* k =newnode;
k->date=e;
q->next=k;
k->next=p;
return k;
刪除任意位置的資料
返回型別:const t & 返回鍊錶被刪除資料的引用
int pos :要刪除資料的位置
template
const t & linklist::del(int pos)
if(!head->next)
cout<<"鍊錶為空,del失敗!"else if(pos<0|pos>this->size())
cout<<"pos位置不存在,del失敗!"else
int i=1;
node* p=head->next;
node* q=null;
while(iq=p;
p=p->next;
i++;
q->next=p->next;
t e=p->date;
delete p;
return e;
刪除與e相同的資料
template
void linklist::delelm(const t&e)
if(!head->next)
cout<<"鍊錶為空,del失敗!"else
node* p=head->next;
node* q=null;
while(p->date!=e)
q=p;
p=p->next;
q->next=p->next;
delete p;
返回鍊錶的長度
template
int linklist::size()
if(!head->next)
cout<<"鍊錶為空!"else
node* p=head->next;
int i=1;
while(p->next)
p=p->next;
i++;
return i;
清空鍊錶
template
void linklist::clear()
node* p=head;
while(p)
head=p;
p=p->next;
deletehead;
遍歷輸出鍊錶中的資料
template
void linklist::display()
if(!head->next)
cout<<"鍊錶為空,display失敗!"else
node* p=head->next;
while(p)
coutp=p->next;
coutlinklistl;
l.push_back(10);
l.push_front(9);
l.push_back(8);
l.push_front(7);
l.display();
l.pop_back();
l.pop_front();
l.display();
cout<<"鍊錶長度:"l.push_front(4);
l.insert(2,6);
l.display();
l.del(2);
l.delelm(9);
l.display();
l.clear();
return 0;
c 簡單鍊錶實現
以下為linklist.件 ifndef linklist h included define linklist h included typedef structlnode lnode,plinklist classlinklist endif linklist h included 以下為lin...
C 鍊錶簡單功能實現
實現的是乙個小型圖書館的程式,功能包括增加新書,以及讀者借書和還書等。如下 include include include include include using namespace std class patron class book bool operator const book bk ...
簡單鍊錶實現
今天元旦,不想工作。只想寫一寫自己想學習的東西。今天就寫了個鍊錶的單向鍊錶。標頭檔案chain.h ifndef chain define chain include include using namespace std templateclass chain templateclass chai...