我是数据结构的新手。我正在尝试为字符串编写链接列表并将列表显示在屏幕上。它崩溃在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;
}
答案 0 :(得分:2)
您需要在Node
函数中使用new
而不是malloc
创建create
。使用malloc时,不调用Node
的构造函数,对data
的赋值将访问未初始化的字符串对象。