似乎每个指南都是如何用int创建LLL,但我在使用char指针时遇到了麻烦。当我运行此代码时,它会立即发生段错误
这是我到目前为止的代码
struct node
{
char * data;
node * next;
};
void build(node * head);//create list
void manipulate(node * & head);//manipulate list
void display(node * head);//display all
void delete_list(node * head);//delete all nodes in linked list
bool again();//asks user if they'd like to continue
int main()
{
node * head = NULL;
//create list from user1 input
while(again)
build(head);
//displays list
display(head);
//manipulate list as user2 reads through it
manipulate(head);
return 0;
}
void build(node * head)
{
head->next = new node;
char * data = new char;
cout << "where to visit? ";
cin.get(head->data,strlen(data)+1,'\n');
head = head->next;
}
答案 0 :(得分:2)
我假设这段代码:
while(again)
build(head);
原意是(调用again
而不是将其与零比较):
while(again())
build(head);
无论哪种方式,第一次通过循环head
都是NULL。但是build
继续使用它仍然是:
head->next = new node;
此处,使用next
会产生段错误,因为head
为NULL。您正在访问内存中的无效位置。