需要帮助在 C 中打印动态分配的链表
Need help printing a dynamically allocated linked list in C
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 在 translations 数组中)
当只有一个单词和翻译时,该函数可以完美运行,但如果我向列表中添加另一个单词,它会进入无限循环并且仍然只打印第一个单词。
实际上,您在上面发布的 printWordList
函数不会无限循环,除非您在为 last
节点填充 next
值时犯了错误。
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 在 translations 数组中)
当只有一个单词和翻译时,该函数可以完美运行,但如果我向列表中添加另一个单词,它会进入无限循环并且仍然只打印第一个单词。
实际上,您在上面发布的 printWordList
函数不会无限循环,除非您在为 last
节点填充 next
值时犯了错误。