早上好,
我尝试构建一个“游戏”版本的河内塔,以后可以手动解决,也可以通过算法本身解决。用户可以选择杆上的磁盘数量。现在,我想将杆上的磁盘设计为链接列表,因为我想使用它们来学习了解它们。
以下代码当然只是临时的,部分的和不完整的,但是如果您能帮助我找到错误/告诉我是否错过了某些事情,我将感到非常高兴。现在,这仅会开始创建所有磁盘。
typedef struct disk{ int placeholder; struct disk *left; struct disk *right; } disk;
void pileUp(disk *pole)
{
int disks = 0;
disk *next = pole->right;
pole->left = NULL;
// input
printf("D: ");
scanf("%d", &disks);
//end
while(disks > 0)
{
next = malloc(sizeof(*pole)); //alloc another diskspace
next->placeholder = disks; //placeholder value
printf("%d\t%p\n", next->placeholder, &next); //check on each
next = next->right; //iterate
--disks;
}
}
int main(int argc, char *argv[])
{
disk pole1, pole2, pole3;
pileUp(&pole1);
return 0;
}
最佳答案
主要功能中的第一个问题:
您必须实例化变量pole1,pole2和pole3作为指向磁盘类型disk* pole1, pole2, pole3;
的指针,然后必须使用malloc为3个磁盘变量分配空间,因此现在可以将指针pole1传递给pileUp函数。
关于c - C汉诺塔中的链接列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48962407/