C ++ связанный список не отображает переменные типа String - PullRequest
0 голосов
/ 09 мая 2019

У меня есть строковая переменная с именем flavour под моим struct Node, каждый раз, когда я вношу строку для переменной flavour, программа перестает работать и ничего не печатает. Я проверил это, используя различные типы переменных, такие как целое число и символ, оба типа переменных работают просто отлично и будут распечатывать все, что находится в переменной.

Вот мой код:

#include <iostream>
using namespace std;
struct Node { 
   string flavor;
   struct Node *next; 
}; 
struct Node* head = NULL;   
void insert(string data) { 
   struct Node* new_node = (struct Node*) malloc(sizeof(struct Node)); 
   new_node->flavor = data; 
   new_node->next = head; 
   head = new_node; 
} 
void display() { 
   struct Node* ptr;
   ptr = head;
   while (ptr != NULL) { 
      cout<<"First data is "<< ptr->flavor; 
      ptr = ptr->next; 
   } 
} 
int main() { 

    string input;
    cout<<"Enter a flavor!"<<endl;
    cin>>input;
    insert(input);

   cout<<"The linked list is: ";
   display(); 

   return 0; 
} 

Вот результат, так как вы можете видеть все, что после cin>>input; или insert(input), похоже, не работает. Я что-то упускаю? Result

Ответы [ 2 ]

3 голосов
/ 09 мая 2019

Выделите с новым вместо malloc. В настоящее время ваш код оставляет строку Node :: flavor в неинициализированном состоянии, поэтому, когда вы пытаетесь присвоить ему значение, он пытается освободить или получить доступ к неверному расположению памяти.

Node* new_node = new Node;
3 голосов
/ 09 мая 2019

При malloc конструктор класса не вызывается. Вместо этого используйте new.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...