int类型的值不能分配给node类型的实体

时间:2014-03-26 11:43:40

标签: list structure

我练习结构,我得到了这样的错误:

操作数类型不兼容("节点*"和" int"), 其中node是mu结构的名称。错误出现在while(),in(p-> next = = p-> val)中。如何检查列表中的下一个对象是否是我想要使其工作的那个?

代码必须从列表中删除我给出的数字,并且需要使用此结构。

struct node
{
    int val;
    node *next;
};
void DelGiven(node *H, int x)
{
    node *p = H;
    if (H != NULL)
    {
        while ((p->next != NULL) && (p->next == p->val))
        {
            node *p2;
            p = p->next;
            p2 = p->next;
            p->next = p2->next;
            delete p2;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

我没有清楚地理解你的问题,但似乎你想删除它们的值等于x的所有节点,如果这是你的愿望,这将是你的答案:

void DelGiven(node *H, int x)
{
    node *p = H;
    node *pre = null;
    if (H != NULL)
    {
        while ((p != NULL))
        {
            if (p->val==x){
                if (pre !=NULL) { pre->next = p->next; }
                delete p;
                p=pre->next;
            }else{
                pre = p;
                p = p->next;
            }
        }
    }
}

如果你想删除x个节点(从列表的顶部),这将有所帮助:

void DelGiven(node *H, int x)
{
    node *p = H;
    if (H != NULL)
    {
        int i=0;
        while ((p->next != NULL) && (i<x))
        {
            i++;
            node *p2;
            p = p->next;
            p2 = p->next;
            p->next = p2->next;
            delete p2;
        }
    }
}

答案 1 :(得分:0)

p-&gt; next是node *的类型,p-&gt; val的类型是int。所以你得到的数据类型不匹配。 我想你需要将下一个节点的val字段与当前节点的val字段进行比较。 因此,创建一个变量来存储p-&gt;接下来,让我们说pNext = p-&gt; next然后比较值pNext-&gt; val == p-&gt; val。