就是很基本的删除链表中值为val的结点,这是一道简单题,然而我一开始却没有写对...
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* removeElements(struct ListNode* head, int val)
{
struct ListNode* p = (struct ListNode*)malloc(sizeof(struct ListNode));//struct ListNode* p = malloc(sizeof(struct ListNode));也有这种写法
p->next = head;
struct ListNode* temp = p;
while (temp->next != NULL)
{
if (temp->next->val == val)
{
temp->next = temp->next->next;
}
else
{
temp = temp->next;
}
}
return p->next;
}
- 返回值的问题,一定是p->next,因为p->next和head不一定相等。([7,7,7,7,7])
- 设置头节点的时候,一定要先申请空间。这种写法也可以struct ListNode* p = malloc(sizeof(struct ListNode));(之前没见过,一下懵了)