我正在尝试在C ++中向Dualy链接列表添加元素。我遇到了一个错误,告诉我它无法从int转换为int *。以下是错误发生在的代码:
void DLList::addNode(int data, int priority) {
node *n;
n = new node;
n->priority = priority;
n->data = data;
if (DLList::first == NULL)
DLList::first = n;
else
DLList::last = n;
}
值数据和优先级都是通过main函数中的随机数生成器选择的整数值,用于调用addNode
函数。错误确实发生在
n->data = data;
以下是节点的结构:
struct node {
int priority;
int *data;
node *next;
node *prev;
};
答案 0 :(得分:1)
由于data
是您示例中唯一的int
,我会继续并假设错误在此行
n->data = data;
所以你的node
结构就像这样:
struct node
{
//Nodey stuff
int* data;
};
因此,n->data = data;
毫无意义。你打算做*(n->data) = data;
。
node::data
分配了空间。更清晰的解决方案是让node::data
成为int
,如下所示:
struct node {
int priority;
int data;
node *next;
node *prev;
};
现在,您不需要更改DLList::addNode
。 n->data = data
可以正常使用。
答案 1 :(得分:0)
好吧,我现在因为错过它而感到有些愚蠢!感谢所有评论的人。问题是数据被声明为int *data
我从数据中删除了*,现在代码正常工作!谢谢大家的回复,我为这个愚蠢的问题道歉...