【发布时间】:2013-12-16 14:32:43
【问题描述】:
我正在学习 C,我尝试制作自己的函数,该函数将从列表中删除给定节点。我有我的结构:
typedef struct list
{
int value;
struct list *next;
} node;
然后我创建节点 {1} {2} {3} {4},myList_ptr 是指向第一个节点的指针,然后我编码:
deletevalue(myList_ptr, 3);
在哪里
void deletevalue(node *ptr, int value)
{
node *temp = ptr;
if(temp->value == value)
{
ptr = ptr->next;
}
else
{
while(temp->next->value != value)
{
temp = temp->next;
}
temp->next = temp->next->next;
}
}
如果我运行上述命令并再次打印列表,我将得到 {1} {2} {4}。但是,如果我运行此命令 deletevalue(myList_ptr, 1); 我的第一个节点不会被删除。
注意事项
- 我知道,如果我将一个不存在的节点作为参数,我的程序就会中断。
- 另外,我知道我实际上并没有删除节点,而只是隐藏了它。
要打印我编写的列表:
void printlist(node *ptr)
{
node *temp = ptr;
printf("Print3 the list: [");
while(temp != NULL)
{
printf(" %d ",temp->value);
temp = temp->next;
}
printf("]\n\n");
}
【问题讨论】:
标签: c linked-list