3_1 删除链表中的节点
Answer-将被删节点下一个val复制到待删除节点,然后将待删节点直接连接到下下一个节点即可。
学到:
/**
?*?Definition?for?singly-linked?list.
?*?struct?ListNode?{
?*?????int?val;
?*?????ListNode?*next;
?*?????ListNode(int?x)?:?val(x),?next(NULL)?{}
?*?};
?*/
c++中结构体可以看作一个权限为public的类。其拥有成员变量、成员函数、构造函数等。
ListNode(int?x)?:?val(x),?next(NULL)?{}就是构造函数的列表初始化操作。
3_2 删除链表的倒数第N个节点,给你一个链表,删除链表的倒数第?n
?个结点,并且返回链表的头结点。
My-获取长度再跑到待删除节点前节点进行删除即可
Answer-快慢指针、栈
学到:初始化一个链表
结构体:
struct ListNode{
?? ?int val;
?? ?ListNode* next;
?? ?ListNode() : val(0), next(nullptr) {}
?? ?ListNode(int x) : val(x), next(nullptr) {}
?? ?ListNode(int x, ListNode* next) : val(x), next(next) {}
};初始链表并链上:
ListNode* head[5];
for (int i = 0; i < 6; i++)
{
?? ?head[i] = new ListNode(i + 1);
}
for (int i = 0; i < 6; i++)
{
?? ?head[i]->next = head[i + 1];
}
head[5]->next = nullptr;注意:结构体声明再.h中只需要include? .h即可不用包含.cpp文件,不然会导致多重定义的符号的错误。