早上好,
我尝试构建一个“游戏”版本的河内塔,以后可以手动解决,也可以通过算法本身解决。用户可以选择杆上的磁盘数量。现在,我想将杆上的磁盘设计为链接列表,因为我想使用它们来学习了解它们。
以下代码当然只是临时的,部分的和不完整的,但是如果您能帮助我找到错误/告诉我是否错过了某些事情,我将感到非常高兴。现在,这仅会开始创建所有磁盘。

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/

10-12 19:53