C++中,链表类该如何使用?

 我来答
许诗文00
推荐于2018-05-10 · TA获得超过4290个赞
知道小有建树答主
回答量:425
采纳率:100%
帮助的人:26.1万
展开全部
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 两个链表连结在一起;
以上是链表类的有关操作,另外加上构造函数和析构函数;
yang_bigarm
推荐于2017-11-25 · TA获得超过3949个赞
知道大有可为答主
回答量:1664
采纳率:100%
帮助的人:611万
展开全部
#首先要引用头文件
#include<list>

#在程序中定义你自己的链表
std::list<int> mylist;

然后使用mylist吧,插入删除,查找等等。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
losicy
2012-05-17 · TA获得超过439个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:227万
展开全部
简单理解就是,一串的数据,中间用链子连着,从前面一个数据可以找到下面的数据。
和数组很像,不过不能从下标找到相应数据~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式