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;
} 展开
#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;
} 展开
展开全部
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分开定义
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分开定义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
merge 函数应该返回一个值(新链表的头指针)
主函数调用merge的时候,不应该带&符号。其他的没有问题
主函数调用merge的时候,不应该带&符号。其他的没有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询