我只是尝试使用链接列表机制使用C ++(使用基本C)创建一个数独求解器。虽然这样做我得到了像
这样的错误node addnode(int, node*)
中:Line 29: error: conversion from 'node*' to non-scalar type 'node' requested
-Wfatal-errors
而导致编译终止。在功能node addnode(int, node*)
中:
#include <iostream>
using namespace std;
struct node
{
int cellvalue;
int cellpos;
int rowpos;
int colpos;
int blockpos;
node *next;
} cells[81];
struct node addnode (int value,struct node *lastpos)
{
node *newnode;
newnode=new node;
newnode->cellvalue = value;
newnode->cellpos=value;
newnode->rowpos=value%9;
newnode->colpos=value/9;
newnode->blockpos=0;
lastpos->next=newnode;
newnode->next = NULL;
printf("Value : %d", newnode->cellvalue);
lastpos=newnode;
return &lastpos;
}
int main()
{
int i=0,value;
node *header, *lastnodeaddr, *lastpos;
lastnodeaddr=NULL;
for (i=0;i<81;i++)
lastnodeaddr=addnode (i,lastnodeaddr);
}
答案 0 :(得分:1)
下面:
lastnodeaddr=addnode (i,lastnodeaddr);
lastnodeaddr
是指向node
的指针,但addnode
按值返回node
。
答案 1 :(得分:-1)
在addnode
lastpos
中是指向node
的指针,您将返回&lastpos
,这意味着双指针为node**
但addnode
为声明按值返回node
因此错误。