尝试解决链接列表问题。 坚持这个基本错误 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;
}
}
无法理解为什么head()和createLinkList()中的头值不同。
答案 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;
}
}