C语言中的幻灯片解谜器
尝试从头开始构建一个c滑动拼图程序。我想我应该使用puzzle.h,puzzle.c,main.c作为文件。我想使用4-nary树结构,因为最多有4个移动。我对以下结构有一个想法: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
#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
会给您一个编译器错误,应该删除它。