如何创建char数组的LLL

时间:2013-12-10 22:14:51

标签: c++

似乎每个指南都是如何用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;
}

1 个答案:

答案 0 :(得分:2)

我假设这段代码:

while(again)
    build(head);

原意是(调用again而不是将其与零比较):

while(again())
    build(head);

无论哪种方式,第一次通过循环head都是NULL。但是build继续使用它仍然是:

head->next = new node;

此处,使用next会产生段错误,因为head为NULL。您正在访问内存中的无效位置。