为什么头值不是“NULL”?

时间:2016-11-13 09:53:35

标签: c++ linked-list

尝试解决链接列表问题。 坚持这个基本错误 createLinkList()中的头值不是“NULL”。 我在这里缺少什么诀窍。 这是我的代码。

#include <iostream>
using namespace std;

void createLinkList(struct node**);
void showList();
void insertNode();

struct node{
    int data;
    struct node * next;
};

int main()
{
    struct node* head = NULL;
    createLinkList(&head);
    cout<<"inside main function \t"<<head<<endl;
    return 0;
}
void createLinkList(struct node **head){
    int data;
    struct node * new_node;

    cout<<"creating Link List ..."<<endl;
    cout<< "Enter the data to be inserted"<<endl;
    cin >> data;
    cout<<"inside createLinkList \t"<<head<<endl;
    if (head == NULL){
        new_node->data=data;
        new_node->next=*head;
        *head=new_node;
        cout<<"Element Added at Head Position"<<endl;
    }
    else{
        cout<<"Element added at other positions"<<endl;
    }

}

输出: enter image description here

无法理解为什么head()和createLinkList()中的头值不同。

2 个答案:

答案 0 :(得分:5)

您的App bar方法未使用createLinkList指针,它正在使用head指针。它应该被称为pointer-to-head

pHead

因此void createLinkList(struct node **pHead){ 永远不会是head - 您应该测试的是NULL*head

但是你有更多的问题。您没有创建NULL节点!

您的代码说(没有调试行):

new

简而言之,您需要回到绘图板。

答案 1 :(得分:0)

您需要在createLinkList函数中的任何位置使用* head。您还需要使用malloc初始化new_node。

#include <iostream>
#include <cstdlib>
using namespace std;

void createLinkList(struct node**);
void showList();
void insertNode();

struct node{
    int data;
    struct node * next;
};

int main()
{
    struct node* head = NULL;
    createLinkList(&head);
    cout<<"inside main function \t"<< head->data <<endl;
    return 0;
}

void createLinkList(struct node **head){
    int data;
    struct node *new_node = (struct node*)malloc(sizeof(struct node));

    cout<<"creating Link List ..."<<endl;
    cout<< "Enter the data to be inserted"<<endl;
    cin >> data;
    cout<<"inside createLinkList \t"<<endl;
    if ((*head) == NULL){
        new_node->data=data;
        new_node->next=*head;
        *head=new_node;
        cout<<"Element Added at Head Position"<<endl;
    }
    else{
        cout<<"Element added at other positions"<<endl;
    }

}