回 帖 发 新 帖 刷新版面

主题:大家帮我看看我的代码哪里错了

我想建立一个单链表,然后打印出来.
LinkList CreateList(LinkList &head)                        //顺序建表
{
    head=new Node;
    head->next=NULL;
    Node *q=head;
    int flag=1;
    while(flag)
    {
        int x;
        cin>>x;
        if(-1!=x)
        {
            Node *p=new Node;
            p->data=x;
            p->next=NULL;
            q->next=p;
            q=p;
        }
        else
            flag=0;
            

    }
    return head;
}

void Print(LinkList &head)
{
    Node *p;
    p=head->next;
    while(p)
    {
        cout<<p->data<<" ";
        p=p->next;
    }
}
int main()
{
    LinkList L;
    CreateList(L);
    Print(L);
    return 0;
}

回复列表 (共5个回复)

沙发

怎么大家都这么懒嘛。。都不进来看一下。。

板凳

从参数来看,head是LinkList型的。
但在函数体中却把它当成Node *!
这就是最大的错误。

3 楼

程序不是很完整,不好看有些东西,不知道你是怎么定义的?

4 楼

[quote]从参数来看,head是LinkList型的。
但在函数体中却把它当成Node *!
这就是最大的错误。[/quote]

很明显 LinkList类型就是Node*

5 楼

尾插法建立单链表的算法是没有错。
你的错就是传入参数head,却重新定义一个head,返回函数却没有真正的给L。

所以你要么直接在create()外面先把L定义好,直接将引用传进去,在里面直接使用就行,不需要重新定义head,也不需要返回。
要么就是没有参数,直接返回head给L。

PS:参数引用传递只在需要函数体内部改变参数的值时使用,像print()根本就不应该用引用。

我来回复

您尚未登录,请登录后再回复。点此登录或注册