c++函数模板的参数传递问题

以下是代码,问题在最后一个Merge函数,参数传递不过去,我不知道怎么传递。#include<iostream>usingnamespacestd;template<cl... 以下是代码,问题在最后一个Merge函数,参数传递不过去,我不知道怎么传递。
#include<iostream>
using namespace std;
template <class T>
struct Node
{
T data;
Node* next;
};
template <class T>
class LinkList
{
Node<T>* head;
public:
LinkList();
LinkList(T a[],int n);
~LinkList();
void Invert();
void PrintList();
void Merge(LinkList &L1,LinkList &L2);
};
template <class T>
LinkList<T>::LinkList(T a[],int n)
{
head=new Node<T>;
Node<T>* r=head;
for(int i=0;i<n;i++)
{
Node<T>* s=new Node<T>;
s->data=a[i];
r->next=s;
r=s;
}
}
template <class T>
void LinkList<T>::PrintList()
{
Node<T>* p=head->next;
while(p)
{
cout<<p->data<<endl;
p=p->next;
}
}
template <class T>
void LinkList<T>::Merge(LinkList &L1,LinkList &L2)
{
Node<T>* p1,p2,p3;
p1=L1.head->next;
p2=L2.head->next;
p3=L1.head;
while((p1!=NULL)&&(p2!=NULL))
{
if((p1->data)<(p2->data))
{
p3->next=p1;
p1=p1->next;
p3=p3->next;
}
else
{
p3->next=p2;
p2=p2->next;
p3=p3->next;
}
}
if(p1!=NULL)p3->next=p1;
if(p2!=NULL)p3->next=p2;
delete L2.head;
L2.head=NULL;
}

int main()
{
char a[20]={'b','d','f','g','i','k','m'};
char b[5]={'a','c','e','h','j'};
LinkList<char> Link1(a,7);
LinkList<char> Link2(b,5);
Link1.Merge(&Link1,&Link2);
cout<<"the merged array are:"<<endl;
Link1.PrintList();
return 0;
}
展开
 我来答
捐你妹8
2015-08-24 · TA获得超过638个赞
知道小有建树答主
回答量:351
采纳率:0%
帮助的人:369万
展开全部
你最后一个函数的声明是void Merge(LinkList &L1,LinkList &L2);表示是用引用传值,所以在调用的使用不用加&符号 Link1.Merge(Link1,Link2);这样就可以了。另外,你这个函数这么写好奇怪……
追问
这是书上的合并两条链表的写法,有更简洁的写法吗?
wdghy123
2015-08-24 · TA获得超过1583个赞
知道大有可为答主
回答量:1514
采纳率:95%
帮助的人:736万
展开全部
template <class T>
struct Node
{
T data;
Node<T>* next; //加上<T>
};

template <class T>
void LinkList<T>::Merge(LinkList<T> &L1,LinkList<T> &L2)
{
Node<T>* p1;
Node<T>* p2;
Node<T>* p3; //p1,p2,p3分开定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
扈怀炜4h
2015-08-24 · TA获得超过6039个赞
知道大有可为答主
回答量:6907
采纳率:67%
帮助的人:1357万
展开全部
merge 函数应该返回一个值(新链表的头指针)
主函数调用merge的时候,不应该带&符号。其他的没有问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式