如何将链接列表传递给功能

时间:2019-04-13 13:55:48

标签: c++

我想制作两个链接列表,并希望按排序顺序将它们合并。我试图将它们带入一个名为“ 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。

1 个答案:

答案 0 :(得分:0)

在开始编码之前,您至少需要学习编程基础。例如。代码(功能)和数据之间的差异。以及数据及其类型之间。

在您的示例中,node*是一种数据类型。 link1link2是函数,即代码创建数据。 start1start2是数据。您需要编写另一个函数来描述其输入和输出数据类型。而不是像这样传递实际数据:

    node *merge(node *link1, node *link2)
    {
        ...
    }
    int main()
    {
        ...
        start3 = merge(start1, start2);
    }

和一些评论:

  1. 在C ++中不要使用malloc,而应使用new
  2. 除非绝对必要,否则不要使用new,如果标准容器不够用,请使用标准容器或增强容器。
  3. 请勿使用using namespace std; Why is "using namespace std" considered bad practice?