C++ C++;链表崩溃

C++ C++;链表崩溃,c++,c++11,visual-c++,C++,C++11,Visual C++,我是数据结构方面的新手。我正在尝试为一个字符串编写一个链接列表,并将列表显示到屏幕上。它在节点*p=create(“I”)处崩溃;带有访问冲突警告的写入位置。这是我的代码,我不知道如何修复它。请帮忙。多谢各位 #include <iostream> #include <cstdlib> #include <string> using namespace std; struct Node { string data; Node *prev,

我是数据结构方面的新手。我正在尝试为一个字符串编写一个链接列表,并将列表显示到屏幕上。它在节点*p=create(“I”)处崩溃;带有访问冲突警告的写入位置。这是我的代码,我不知道如何修复它。请帮忙。多谢各位

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

struct Node
{
    string data;
    Node *prev, *next;
};

Node* create (string value)
{
    Node *temp = (Node*)malloc(sizeof(Node));
    if (NULL==temp) return NULL;

    temp->data=value;
    temp->next=NULL;
    temp->prev=NULL;
    return temp;
}

void addHead (Node* head, string value)
{
    Node *temp = new Node;
    temp->data=value;
    temp->next=head;
    head->prev=temp;
    head = temp;
    temp->prev = NULL;
}

void addTail (Node* head, string value)
{
    Node* s = new Node;
    Node* temp = new Node;
    s=head;
    while (s->next!=NULL)
        s = s->next;
    s->next = temp;
    temp->prev = s;
}

void display (Node* head)
{
    if (head==NULL) return;
    else
    {
        cout << head->data << " ";
        display (head->next);
    }
}

int main()
{
    Node *p = create("I ");
    addTail(p, "want ");
    addTail(p, "cookies ");

    display(p);

    return 0;
} 
#包括
#包括
#包括
使用名称空间std;
结构体类型
{
字符串数据;
节点*prev,*next;
};
节点*创建(字符串值)
{
Node*temp=(Node*)malloc(sizeof(Node));
if(NULL==temp)返回NULL;
温度->数据=值;
temp->next=NULL;
temp->prev=NULL;
返回温度;
}
void addHead(节点*头,字符串值)
{
Node*temp=新节点;
温度->数据=值;
温度->下一步=头部;
压头->上一个=温度;
压头=温度;
temp->prev=NULL;
}
void addTail(节点*头,字符串值)
{
Node*s=新节点;
Node*temp=新节点;
s=头部;
while(s->next!=NULL)
s=s->next;
s->next=温度;
温度->上一个=s;
}
无效显示(节点*头部)
{
if(head==NULL)返回;
其他的
{
cout数据(下一步);
}
}
int main()
{
节点*p=创建(“I”);
addTail(p,“want”);
addTail(p,“cookies”);
显示器(p);
返回0;
} 

您需要在
创建
函数中使用
新建
,而不是
malloc
,创建一个
节点。使用malloc,不会调用
节点
的构造函数,对
数据
的赋值将访问未初始化的字符串对象