线性表
void Copy(Link &pc,Link pa)//把一个链表的内容复制给另一个链表
{
Link p,q,r;
pc=new LNode;
pc->next=NULL;
r=pc;
p=pa;
while(p->next!=NULL)
{
q=new LNode;
q->data.coef=p->next->data.coef;
q->data.exp=p->next->data.exp;
r->next=q;
q->next=NULL;
r=q;
p=p->next;
}
}
请解释一下每个语句的意思 谢谢
[解决办法]
- C/C++ code
void Copy(Link &pc,Link pa)//把一个链表的内容复制给另一个链表{ Link p,q,r; // 一堆临时变量 pc=new LNode; // 为新链表申请一个头节点 pc->next=NULL; // 完善头节点 r=pc; // r指向新表头 p=pa; // p指向老表头 while(p->next!=NULL) // 若老表非空则循环 { q=new LNode; // 准备一个新节点 q->data.coef=p->next->data.coef; // 复制节点数据 q->data.exp=p->next->data.exp; // 同上 r->next=q; // 将新节点连入新表中 q->next=NULL; // 完善新节点 r=q; // 推进r指针 p=p->next; // 推进p指针 }} /* 这是一个错误的链表复制函数,它会使新链表里多出一个头节点, 除非调用者在传入参数时故意略去头节点。 */
[解决办法]