【发布时间】: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
输入英语、西班牙语、法语的单词:
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