我这里有个小问题。
我必须编写一个单链表的东西,从现在开始我没有遇到任何问题。我坚持删除链接列表中作者姓名的函数调用后给出的子字符串的出现。
程序片段:
void list_delete_element(kniha_t* inode)
{
kniha_t *actualnode = inode;
kniha_t *prevnode = NULL;
kniha_t *tempnode = NULL;
uchar_t needle[100];
uchar_t haystack[100];
ushort_t occur = 0;
scanf("%s", &needle);
lower_string(needle);
while(actualnode != NULL)
{
copy_string(haystack, actualnode->autori);
lower_string(haystack);
if(search_string(haystack, needle))
{
occur++;
if ( NULL != prevnode)
{
prevnode->next = actualnode->next;
}
else
{
inode = actualnode->next;
}
tempnode = actualnode;
actualnode = actualnode->next;
free(tempnode);
tempnode = NULL;
}
else
{
prevnode = actualnode;
actualnode = actualnode->next;
}
}
printf("Deleted sa %hu nodes\n", occur);
}
以及我必须加载的东西,忽略 ---: http:
//pastebin.com/NPvEr3y6
问题是,它有效(:D)......直到我扫描所有出现的情况。
示例:
当我输入 pra 时,它必须删除所有包含“pra”的节点。它就像一个魅力......但是当我只输入“p”时,它告诉我,所有的 X 事件都被释放了,但它们留在缓冲区的某个地方,因为我可以再次打印整个列表!
我将非常感谢,谁能给我一些建议。