C ++链表崩溃了

时间:2015-10-03 02:40:31

标签: c++ c++11 visual-c++

我是数据结构的新手。我正在尝试为字符串编写链接列表并将列表显示在屏幕上。它崩溃在Node * 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;
} 

1 个答案:

答案 0 :(得分:2)

您需要在Node函数中使用new而不是malloc创建create。使用malloc时,不调用Node的构造函数,对data的赋值将访问未初始化的字符串对象。