【问题标题】:需要帮助在 C 中打印动态分配的链表
【发布时间】:2022-01-23 10:57:54
【问题描述】:
typedef struct Word {
    char** translations;
    struct Word* next;
} Word;

typedef struct {
    char** languages;
    int numOfLanguages;
    Word* wordList;
} Dictionary;

void printWordList(Word* wordlist, int numOfLanguages)
{
    Word* currentWord = wordlist;
    int i = 0;
    while (currentWord != NULL)
    {
        for (i=0; i < numOfLanguages; i++)
        {
            printf("%s", currentWord->translations[i]);
            if (i < numOfLanguages - 1)
                putchar(',');
        }
        putchar('\n');
        currentWord = currentWord->next;
    }
    putchar('\n');
}

嘿,我有一个程序是一个动态分配的字典,它的工作原理是这样的:

选择字典:

  1. 英语、西班牙语、法语

  2. 英语、希伯来语

  3. 西班牙语、英语

    1
    

输入英语、西班牙语、法语的单词:

Thank_you,Gracias,Merci

单词已添加成功!

稍后我使用上面的函数 printWordList 尝试打印所有单词(以及它们的翻译,Thank_you,Gracias,Merci 算作一个,Gracias 和 Mercy 在翻译数组中)

当只有一个单词和翻译时,该功能可以完美运行,但是如果我在列表中添加另一个单词,它会进入无限循环并且仍然只打印第一个单词。

非常感谢您对此的帮助,非常感谢!

【问题讨论】:

  • 欢迎来到 Stack Overflow。请阅读the help pages,接受SO tour,阅读How to Ask,以及this question checklist。最后请学习如何创建一个minimal reproducible example 向我们展示。问题的根本原因可能在于您没有向我们展示的代码。
  • 如果您编写了程序,这应该只是找出您在编写程序时的想法。您是否在代码中制作了未向我们展示的 cmets?
  • 我现在正在写,还有什么不清楚的地方吗?我很乐意解释这个想法或添加相关的 cmets
  • @Shakshouk 是的,有很多事情不清楚,例如我们不知道您如何称呼printWordList,我们不知道列表是否在第一名。请edit 并显示minimal reproducible example,这可能需要您做一些工作。
  • 您需要与我们分享您是如何创建 Word 对象列表的。因此,您上面显示的printWordList 函数不会用于无限循环,除非您在为最后一个节点填写next 值时出错。

标签: c linked-list dynamic-programming


【解决方案1】:

事实上,您在上面发布的printWordList 函数不会用于无限循环,除非您在为last 节点填写next 值时出错。

【讨论】:

    猜你喜欢
    • 2013-02-12
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    相关资源
    最近更新 更多