问题
给出链表头指针,删除单链表中值为给定值的某个结点,若有重复结点则只需删除第一个。
思路
采用一级指针删除链表节点
采用一级指针删除链表结点需要判断前驱结点、后续结点,代码量相对较多。
采用二级指针删除链表结点
在处理链表的问题中,尤其是删除链表结点,采用二级指针会使代码非常简洁。不需要判断前驱结点和后续结点,不需要判断是否是头结点和尾节点。
代码如下:
typedef struct LinkedListNode
{
Object item;
LinkedListNode *next;
LinkedListNode(Object _item) : item(_item), next(nullptr) {}
} LLNode;
void removeLinkedListNode(LLNode **head, Object item)
{
for(LLNode **current = head; *current;)
{
LLNode *temp = *curre