C ++链表不显示字符串类型变量

时间:2019-05-09 03:39:08

标签: c++ string list oop linked-list

我在flavour下有一个名为struct Node的字符串变量,每当我输入风味变量的字符串时,程序都会停止工作并最终不打印任何内容。我已经通过使用不同的变量类型(例如整数和字符)对其进行了测试,这两种变量类型都可以正常工作,并且可以打印出变量中的所有内容。

这是我的代码:

#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 个答案:

答案 0 :(得分:3)

使用malloc不会调用类构造函数。请改用new

答案 1 :(得分:3)

用new代替malloc分配。当前,您的代码使字符串Node :: flavor处于未初始化状态,因此,当您尝试为其分配值时,它试图释放或访问无效的内存位置。

Convert.exe