今天三道题目:
全部关于链表的
先说说情况吧:今天刷题时间不太够,写博客的时候已经11点了,而且刷题也没用深度思考
晚上和明天补一下
那么现在就开始记录啦
第一题:链表的删除
题目有两种解法
第一:单独考虑头节点
第二:设置虚拟头节点
首先看看单独考虑头节点
在做链表的题目时,我们需要定义一个遍历的指针cur,类型是和链表一个类型的。
首先把 头节点的位置赋值给cur
while(head != NULL && head->val == val)
{
tmp = head;
head = head->next;
delete tmp;
}
然后开始判断非头节点位置
while(cur != NULL && cur->next != NULL)
{
if( cur->next->val == val)
{
保存运行cur->next
cur->next = cur->next->next;
删除
}
else
{
cur = cur -> next;
}
return
}
这是第一种方法,主要的蛮烦就是需要把头节点和非头节点分开判断
但是注意头节点删除要用while,不能用if
然后下面来看一下第二种
虚拟头节点
步骤:首先创建一个虚拟头节点,将head的位置赋值给虚拟头节点的 next
然后就可以创建一个cur开始判断啦
内容和上面的非头节点差不多
最后把虚拟头节点的next赋值给head
(因为不确定是头节点是否会被删除,所以要返回头节点就返回虚拟头节点的next)
下面是第二题的内容