回 帖 发 新 帖 刷新版面

主题:初学者发问

我是一个C的初学者,不知怎样设计一个函数来实现对单链表的复制,请各位大侠指点
谢谢

回复列表 (共3个回复)

沙发

链表有两个基础操作,读取、插入;

所谓复制,就是从一个链表一个元素一个元素读出来,再一个一个插到另一个链表上去。明白?

板凳

谢谢大侠,按照你的提示我还真做出来了!!

3 楼

这是小弟写的,经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;
      }
    }
 }

我来回复

您尚未登录,请登录后再回复。点此登录或注册