主题:初学者发问
xinnuo
[专家分:10] 发布于 2006-04-10 21:52:00
我是一个C的初学者,不知怎样设计一个函数来实现对单链表的复制,请各位大侠指点
谢谢
回复列表 (共3个回复)
沙发
rickone [专家分:15390] 发布于 2006-04-10 23:10:00
链表有两个基础操作,读取、插入;
所谓复制,就是从一个链表一个元素一个元素读出来,再一个一个插到另一个链表上去。明白?
板凳
xinnuo [专家分:10] 发布于 2006-04-11 11:17:00
谢谢大侠,按照你的提示我还真做出来了!!
3 楼
xinnuo [专家分:10] 发布于 2006-04-11 11:28:00
这是小弟写的,经VC++运行通过,不知还能不能再改进一下
谢谢各位大侠指点
template<class T> //定义结点结构
struct node
{
node(){link=NULL;}
node(T e,node *next)
{
element=e;link=next;
}
T element;
node<T> *link;
};
template<class T>
void buildlist(node<T>* &first) //建立链表
{
T e;char c;
node<T>*p,*r=NULL;first=NULL;
cout<<"Another element?y/n"<<endl;
while((c=getchar())=='\n');
while(tolower(c)!='n'){
cin>>e;p=new node<T>(e,NULL);
if(first!=NULL)r->link=p;
else first=p;
r=p;
cout<<"Another element?y/n"<<endl;
while((c=getchar())=='\n');
}
}
template <class T>
void copy(node<T>*first,node<T>*head) //复制链表
node<T> *r=first,*q=head;
while(r)
{
q->element=r->element;
r=r->link;
if(r!=NULL){
node<int> *p=new node<int>();
q->link=p;
q=q->link;
}
}
}
我来回复