首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C链接列表- Boggle程序

C链接列表- Boggle程序
EN

Stack Overflow用户
提问于 2015-06-26 05:22:25
回答 1查看 192关注 0票数 0

我希望我能对我的代码有一个全新的认识。我正在做一项任务,这是一场博格游戏的开始。基本的前提是我们有一个包含96个字符的文本文件,我们的程序将把这些字符分别读取,并将它们作为节点添加到一个线性链接列表中,然后将每个项目复制到另一个线性链接列表中,该列表将在每个芯片上放置6个字符,总共为16个骰子。我已经让大多数函数正常工作了,除了下面的一个函数,它应该使用包含所有96个字符的线性链表(struct ),并将每个字符复制到第二个线性链接列表()。函数中的第三个参数应该是要复制的字符的索引。我在下面包含了我的主要功能,这样您就可以查看实现了。任何洞察力或指导都将不胜感激,因为我现在迷路了!

代码语言:javascript
复制
void addBoggleDieSide(struct boggleDataNode *head1, struct boggleDieSideNode *head2, int index)
{
    int i = 0;

    struct boggleDieSideNode *temp = NULL;
    struct boggleDieSideNode *right = NULL;

    struct boggleDataNode *helper = NULL;

    temp = (struct boggleDieSideNode *)malloc(sizeof(struct boggleDieSideNode));

    helper = (struct boggleDataNode *)malloc(sizeof(struct boggleDataNode));

    helper = head1;

    for(i = 0; i <= index; i++)
    {
        helper = helper->nextData;
    }

    strcpy(temp->dieSideData, helper->data);

    temp->nextSide = NULL;

    if (head2 == NULL)
    {
        head2 = temp;
    }
    else
    {
        right = head2;

        while(right->nextSide != NULL)
        {
            right = right->nextSide;
        }

        right->nextSide = temp;
     }

     return;
 }







int main()
{
    int counter = 0;
    int i = 1;

    struct boggleDataNode *head1 = NULL;
    struct boggleDieSideNode *head2 = NULL;

    // Reads in original text file to boggleDataNode linked list
    read(&head1);

    // Displays boggleDataNode linked list
    displayDataFile(head1);

    for(i = 1; i <= 16; i++)
    {
        // Clears die that was just created in loop and starts a new die
        head2 = NULL;

        for(i = 1; i <= 6; i++)
        {
            addBoggleDieSide(head1, head2, counter);
            counter++;
        }

        // Displays values on each die
        displayDieSide(head2);
     }

     return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-26 05:50:33

(head2 == NULL)的案子并没有做你想做的事情。head2 = temp只设置head2本地值。一旦函数返回,该值就会丢失。调用方的head2未设置,因此始终为空。

您的函数应该传入指向头部指针的指针。类似于:

代码语言:javascript
复制
void addBoggleDieSide(struct boggleDataNode *head1, struct boggleDieSideNode **head2, int index)
{
   ...
   if (*head2 == NULL)
   {
       *head2 = temp;
   }
   ...
}

main()
{
    ...
    addBoggleDieSide(head1, &head2, counter);
    ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31065506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档