繁体   English   中英

河内塔 C 中的链表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM