郑州官网网站优化公司,百度百科创建入口,四川油建公司官网,外贸set是什么意思今日任务
链表理论基础203.移除链表元素707.设计链表206.反转链表 链表理论基础
1#xff09;单链表
单链表中的指针域只能指向节点的下一个节点 2#xff09;双链表
双链表#xff1a;每一个节点有两个指针域#xff0c;一个指向下一个节点#xff0c;一个指向上一个…今日任务
链表理论基础203.移除链表元素707.设计链表206.反转链表 链表理论基础
1单链表
单链表中的指针域只能指向节点的下一个节点 2双链表
双链表每一个节点有两个指针域一个指向下一个节点一个指向上一个节点
双链表 既可以向前查询也可以向后查询 3循环链表
链表首尾相连 链表的存储方式
链表在内存中可不是连续分布是散乱分布在内存中的某地址上分配机制取决于操作系统的内存管理 链表操作
1删除节点 2添加节点 203 移除链表元素
题目链接https://leetcode.cn/problems/remove-linked-list-elements/description/
移除元素简单注意就是需要增加一个节点作为头节点以免因为第一个元素被移除后丢失了链表然后遍历链表进行删除操作
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/
class Solution {public ListNode removeElements(ListNode head, int val) {if(head null) {return head;}ListNode dummyHead new ListNode(0);dummyHead.next head;ListNode tmp dummyHead;while(tmp.next ! null) {if(tmp.next.val val) {tmp.next tmp.next.next;}else {tmp tmp.next;}}return dummyHead.next;}
} 707 设计链表
题目链接https://leetcode.cn/problems/design-linked-list/
实现链表的基本操作直接在力扣完成过程略 206 反转链表
题目链接https://leetcode.cn/problems/reverse-linked-list/description/
这个是单链表的反转
思路增加一个第一个元素 null
遍历元素先需要暂存当前元素其后继节点然后使当前元素之前其前面的元素再保存当前元素节点访问下一个元素
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/
class Solution {public ListNode reverseList(ListNode head) {ListNode cur head, pre null;;while(cur ! null) {ListNode tmp cur.next;cur.next pre;pre cur;cur tmp;}return pre;}
}