我想制作两个链接列表,并希望按排序顺序将它们合并。我试图将它们带入一个名为“ merge(link1,link2)”的函数中,但是我不知道该如何给出该函数的链接列表的引用。
#include<iostream>
#include<malloc.h>
using namespace std;
struct node
{
int info;
node *next;
};
node *start1=NULL;
node *start2=NULL;
void link1(int x)
{
node *temp=(node *)malloc(sizeof(node));
node *t;
temp->info=x;
temp->next=NULL;
if(start1==NULL)
start1=temp;
else
{
t=start1;
while(t->next!=0)
{
t=t->next;
}
t->next=temp;
}
}
void link2(int x)
{
node *temp=(node *)malloc(sizeof(node));
node *t;
temp->info=x;
temp->next=NULL;
if(start2==NULL)
start2=temp;
else
{
t=start2;
while(t->next!=0)
{
t=t->next;
}
t->next=temp;
}
}
void merge(link1,link2)
{
//merge function
}
int main()
{
link1(1);
link1(2);
disp1();
cout<<"\n";
link2(3);
link2(4);
disp2();
merge(link 1,link2); //this is problem how to give reference of inked lists here.
}
输出: 合并功能后的预期输出为1-> 2-> 3-> 4。
答案 0 :(得分:0)
在开始编码之前,您至少需要学习编程基础。例如。代码(功能)和数据之间的差异。以及数据及其类型之间。
在您的示例中,node*
是一种数据类型。 link1
和link2
是函数,即代码创建数据。 start1
和start2
是数据。您需要编写另一个函数来描述其输入和输出数据类型。而不是像这样传递实际数据:
node *merge(node *link1, node *link2)
{
...
}
int main()
{
...
start3 = merge(start1, start2);
}
和一些评论:
malloc
,而应使用new
。new
,如果标准容器不够用,请使用标准容器或增强容器。using namespace std;
Why is "using namespace std" considered bad practice?