Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的幻灯片解谜器_C - Fatal编程技术网

C语言中的幻灯片解谜器

C语言中的幻灯片解谜器,c,C,尝试从头开始构建一个c滑动拼图程序。我想我应该使用puzzle.h,puzzle.c,main.c作为文件。我想使用4-nary树结构,因为最多有4个移动。我对以下结构有一个想法: #ifndef PUZZLE_H #define PUZZLE_H struct Node{ int Node *parent; int Node *next1; int Node *next2; int Node *next3; int No

尝试从头开始构建一个c滑动拼图程序。我想我应该使用puzzle.h,puzzle.c,main.c作为文件。我想使用4-nary树结构,因为最多有4个移动。我对以下结构有一个想法:

#ifndef PUZZLE_H
#define PUZZLE_H

struct Node{

       int Node *parent;
       int Node *next1;
       int Node *next2;
       int Node *next3;
       int Node *next4;
       int calc_heuristic;
       void     *pdata; }; Node

#endif 
如何以及在何处将数组赋值编码为*pdata,在main.c中?这看起来对吗

应该是

struct Node *parent;
struct Note *next1;
依此类推,因为您需要指向树中其他节点的指针。如果
pdata
始终是一个3x3数组,那么您可以通过将其声明为3x3数组来节省一些麻烦,例如

int puzzleData[3][3];    // current state of the puzzle for this node

如果在编译时不知道该数组的大小,那么您必须在
malloc
内存用于
Node
结构本身的同时
malloc
内存用于
int Node
应该做什么?我希望父节点指向父节点,当树展开时,nextX指向下一个子节点。Pdata指向3x3阵列。然后我计算每个谜题状态的启发式,并按降序排列每个状态的值,然后从启发式的出租值中选择下一步。提出一个没有算法的数据结构是非常愚蠢的。您的解算器将如何工作?我对算法有一个想法,但我正试图找出如何构建算法的结构。也许你觉得很傻,但一个人必须从某个地方开始。现在你从哪里开始?算法优先,或结构优先?结构节点{struct Node*parent;struct Node*next1;struct Node*next2;struct Node*next3;struct Node*next4;int计算启发式;int拼图[3][3];};节点结构应该是什么样的?您在添加到问题的注释中已经找到了它,尽管最后一个分号后面的单词
Node
会给您一个编译器错误,应该删除它。