C++中,链表类该如何使用?
展开全部
mylist.h //头文件
struct node
{ int idata_item;
struct node *pnode;} //结点的定义
class mylist
{ private: //成员变量的说明
struct node* _at_front;
struct node* _at_end; //定义该变量是为了链表的连结
int _size;
public:
struct node* get_front(){return _at_front;}
struct node* get_end(){return _at_end;}
int size(void){return _size;}
void insert_front(int)
void insert_end(int)
bool insert(struct node*,int)
int remove(int)
void remove_front(void)
void remove_end(void)
struct node* find(int)
void display(void)
void reverse(void)
bool equality(mylist&)
mylist& concat(mylist&)
mylist():_at_front(0),_at_end(0),_size(0) //构造函数
~mylist()
}
链表的实现如下:
mylist.cpp //链表实现文件名
//insert实现代码
bool mylist::insert(struct node* pnode,int a)
{assert(pnode!=0);
struct node* temp=new struct node;
if(!temp)
{temp->idata_item=a;
temp->pnext=pnode->pnext;
pnode->pnext=temp;}
return true;
else
cerr<<"non memory allocate"<<endl;
return false;}
//display实现代码
void mylist::display(void)
{if(_size==0)
cout<<"mylist is empty"<<endl;
else
{ struct node *iter=_at_front;
for(int i=1;i<=_size;i++)
{ cout<<iter->idata_item<<" ";
iter=iter->pnext;}
}
}
//reverse实现代码
void mylist::reverse(void)
{struct node *temp;
temp=_at_front;
_at_front=_at_end;
_at_end=temp;
while(
}
//remove实现代码
int mylist::remove(int a)
{ struct node *iter1=_at_front;
struct node *iter2=0;
for(int i=1;i<=_size;i++)
{ if(iter1->idata_item!=a)
iter2=iter1;
iter1=iter1->pnext;
else
iter2=iter1->pnext;
delete iter1;
_size--;
return 1;
}
return 0;}
//insert_end实现代码
void mylist::insert_end(int a)
{ struct node* temp=new struct node;
temp->idata_item=a;
if(!_at_end)
{ _at_front=_at_end=temp;
_size++;
}
else
{_at_end->pnext=temp;
_at_end=temp;
_size++;
}
}
//insert_front实现代码
void mylist::insert_front(int a)
{struct node* temp=new struct node;
temp->idata_item=a;
if(!_at_front)
{_at_front=_at_end=temp;
_size++;
}
else
{temp->pnext=_at_front;
_at_front=temp;
_size++;}
}
链表是数据结构的知识,现在我们用C++的类来实现封装.
对链表类分析如下.
链表类的成员变量(private)
struct node *_at_front;
struct node *_at_end;
int _size;
链表中结点,所以定义结点如下:
struct node
{ int idata_item;
struct node *pnext;}
链表所支持的操作:
insert 插入一个结点到指定的结点后;
remove 移去一个结点;
find 查找一个结点;
reverse 翻转一个链表;
size 得到链表中结点的个数;
display 链表的输出;
equality 链表相等的判断;
concat 两个链表连结在一起;
以上是链表类的有关操作,另外加上构造函数和析构函数;
struct node
{ int idata_item;
struct node *pnode;} //结点的定义
class mylist
{ private: //成员变量的说明
struct node* _at_front;
struct node* _at_end; //定义该变量是为了链表的连结
int _size;
public:
struct node* get_front(){return _at_front;}
struct node* get_end(){return _at_end;}
int size(void){return _size;}
void insert_front(int)
void insert_end(int)
bool insert(struct node*,int)
int remove(int)
void remove_front(void)
void remove_end(void)
struct node* find(int)
void display(void)
void reverse(void)
bool equality(mylist&)
mylist& concat(mylist&)
mylist():_at_front(0),_at_end(0),_size(0) //构造函数
~mylist()
}
链表的实现如下:
mylist.cpp //链表实现文件名
//insert实现代码
bool mylist::insert(struct node* pnode,int a)
{assert(pnode!=0);
struct node* temp=new struct node;
if(!temp)
{temp->idata_item=a;
temp->pnext=pnode->pnext;
pnode->pnext=temp;}
return true;
else
cerr<<"non memory allocate"<<endl;
return false;}
//display实现代码
void mylist::display(void)
{if(_size==0)
cout<<"mylist is empty"<<endl;
else
{ struct node *iter=_at_front;
for(int i=1;i<=_size;i++)
{ cout<<iter->idata_item<<" ";
iter=iter->pnext;}
}
}
//reverse实现代码
void mylist::reverse(void)
{struct node *temp;
temp=_at_front;
_at_front=_at_end;
_at_end=temp;
while(
}
//remove实现代码
int mylist::remove(int a)
{ struct node *iter1=_at_front;
struct node *iter2=0;
for(int i=1;i<=_size;i++)
{ if(iter1->idata_item!=a)
iter2=iter1;
iter1=iter1->pnext;
else
iter2=iter1->pnext;
delete iter1;
_size--;
return 1;
}
return 0;}
//insert_end实现代码
void mylist::insert_end(int a)
{ struct node* temp=new struct node;
temp->idata_item=a;
if(!_at_end)
{ _at_front=_at_end=temp;
_size++;
}
else
{_at_end->pnext=temp;
_at_end=temp;
_size++;
}
}
//insert_front实现代码
void mylist::insert_front(int a)
{struct node* temp=new struct node;
temp->idata_item=a;
if(!_at_front)
{_at_front=_at_end=temp;
_size++;
}
else
{temp->pnext=_at_front;
_at_front=temp;
_size++;}
}
链表是数据结构的知识,现在我们用C++的类来实现封装.
对链表类分析如下.
链表类的成员变量(private)
struct node *_at_front;
struct node *_at_end;
int _size;
链表中结点,所以定义结点如下:
struct node
{ int idata_item;
struct node *pnext;}
链表所支持的操作:
insert 插入一个结点到指定的结点后;
remove 移去一个结点;
find 查找一个结点;
reverse 翻转一个链表;
size 得到链表中结点的个数;
display 链表的输出;
equality 链表相等的判断;
concat 两个链表连结在一起;
以上是链表类的有关操作,另外加上构造函数和析构函数;
展开全部
#首先要引用头文件
#include<list>
#在程序中定义你自己的链表
std::list<int> mylist;
然后使用mylist吧,插入删除,查找等等。
#include<list>
#在程序中定义你自己的链表
std::list<int> mylist;
然后使用mylist吧,插入删除,查找等等。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单理解就是,一串的数据,中间用链子连着,从前面一个数据可以找到下面的数据。
和数组很像,不过不能从下标找到相应数据~~~
和数组很像,不过不能从下标找到相应数据~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询