[英]Linked List in Towers of Hanoi in C
早上好,我尝试构建河内塔的“游戏”版本,以后可以手动解决,也可以通过算法本身解决。 用户可以选择杆上的磁盘数量。 现在我尝试将杆上的磁盘设计为链表,因为我想用它们来学习理解它们。 下面的代码当然只是暂时的、部分的和不完整的,但如果你能帮我找到错误/告诉我我是否遗漏了什么,我会很高兴。 现在这只是处理开始时所有磁盘的创建。
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 函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.