node;
node的前导结点pre的next指向p的next;
释放p的内存
如果是Java这类自动管理内存的语言,可以不用管第三步。...从这里也能看出,删除操作的时间复杂度也是O(1),但是,如果没有告知前导结点pre的地址,那么寻址的过程是不可省略的,其时间复杂度最坏情况下还是O(n)。...具体到链表里,当一个数据被访问时,其逻辑是这样的:
遍历链表寻找该数据,如果能找到,则将其从原来的位置删除并移到链表的头部(带头结点的链表则是移动到头结点之后);
如果没有找到该数据,则分为两种情况。...输入:head = [1,1,2]
输出:[1,2]
初见这个题的时候我想的比较复杂,我想如果用Java的话那我一定引入一个HashMap,如果Key存在则把链表的元素删除。...反转链表
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
我本来想的是再搞一个链表,用头插法。不过想想LeetCode可能会限制malloc,那就只能作罢。