我有一个程序可以读入文件,对每个单词进行标记并将其发送到我的链表功能。它检查它已存在的单词,如果不存在它将它放在前面。我的程序适用于小型文本,但后来很快下山。
- 这是每次插入后的打印(\ n打印完成后) -
可以看出它有效,但是然后列表中的部分内容就像疯了一样变得混乱而非常奇怪。我被提供了以前的代码,它自动为我标记,并在每次搜索无法找到匹配时调用插入。这是我的插入和搜索代码。
Boolean search(char *target)
{
assert(target != NULL);
struct NODE *temp = head;
Boolean result = false;
if ((temp != NULL) && (target != NULL))
{
do
{
if (strcmp(temp->item, target) == 0)
{
result = true;
temp = NULL;
} else
temp = temp->next;
} while (temp != NULL);
}
else
if (target == NULL)
{
printf("Error, no search target provided!\n");
}
return result;
}
Boolean insert(char *new_string)
{
assert(new_string != NULL);
Boolean result = false;
if (new_string != NULL)
{
new = (struct NODE *) malloc(sizeof(Node));
if (new == NULL)
{
printf("Error, no memory left, consider smaller file");
}
else
{
new->item = new_string;
new->next = head;
head = new;
result = true;
printConcordance(); /*THIS PRINTS THE CURRENT LIST*/
}
}
else
{
printf("Error, string was not given!\n");
}
return result;
}
我假设我做了一些错误的记忆,所以我确保我的所有节点都是全局变量,并尝试了各种类似的东西,但我没有尝试过每一个工作。更改打印件甚至小编辑都会产生巨大的影响,这让我感到更加困惑。我尝试在Eclipse和Cygwin上进行测试,两者输出不同。