回 帖 发 新 帖 刷新版面

主题:有关头指针的问题,大家帮忙啊

刚学数据结构,有个问题不明白。
我在使用后插法的时候,对整个链表遍历了一遍,并成功的付了值,但我找不到头指针,没法把整个链表输出了。
#include<iostream>
using namespace std;
 struct node
{
    int a;
    node *next;
};
void initlist(node *&l)这里初始化了头节点,是不是就声明了头指针了呢?
{
    l=new node;
    l->next=NULL;
}
void creat(int a[],int n,node *&l)
{
    node *s;
    for(int i=0;i<n;i++)
    {
        s=new node;
        s->a=a[i];
        s->next=l->next;
        l->next=s;
        l=s;
    }
    l->next=NULL;
}
void display(node *l)
{
    while (l->next!=NULL)
    {
        cout<<l->a<<endl;
        l=l->next;
    }
}
void main()
{
    int a[4]={1,2,3,4};
    node *list;
    initlist(list);
    creat(a,4,list);
    display(list);怎么不能把链表中的所有节点的元素输出呢?
    cout<<list->a<<endl;
}

回复列表 (共3个回复)

沙发

#include<iostream>
using namespace std;
 struct node
{
    int a;
    node *next;
};
node* initlist(node *&l)//这里初始化了头节点,是不是就声明了头指针了呢?
{
    l=new node;
    l->next=NULL;
    return l;
}
void creat(int a[],int n,node *&l)
{
    node *s;
    for(int i=0;i<n;i++)
    {
        s=new node;
        s->a=a[i];
        s->next=l->next;
        l->next=s;
        l=s;
    }
    l->next=NULL;
}
void display(node *l)
{
    while (l->next!=NULL)
    {
        cout<<l->a<<endl;
        l=l->next;
    }
}
void main()
{
    int a[4]={1,2,3,4};
    node *list,*list1;
    list1 = initlist(list);
    creat(a,4,list);
    list1 = list1->next;
    display(list1);//怎么不能把链表中的所有节点的元素输出呢?
    cout<<list->a<<endl;

这样就可以全部输出了

板凳

再调用Create函数得时候
它已经到表尾了
你没有从表头开始

3 楼

谢谢!

我来回复

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