力扣算法题打卡第一天 链表
1.定义
链表是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针连接实现的,每一个链表都包含多个节点,节点又包含两个部分,一个是数据域,一个是引用域。
2.链表的优缺点
优点:相对于数组来说,增删容易,内存利用率高,拓展性比数组好
缺点:相对于数组来说,内存占用大,不可以随机访问,访问需要从头遍历
3.打卡链表相关题目:
力扣21题:
解题思路;首先设置一个虚拟头结点,然后用while循环将链表1和链表2进行比对,将小的值输入到虚拟头结点后,然后在进行对比,直到合并完毕,我们在进行两个链表的拼接时,首先要判断两个链表是不是空,当都不是空的时候,才进行while循环对比合并,当一个链表为空的时候,只需要将另外一个链表剩下的未对比合并的部分直接逐项写入到合并好的链表即可。
代码如下:
class Solution { public ListNode mergeTwoLists(ListNode list1, ListNode list2) { ListNode dummy = new ListNode(-1); ListNode p = dummy; ListNode p1 = list1; ListNode p2 = list2; while(p1 != null && p2 != null){ if(p1.val > p2.val){ p.next = p2; p2 = p2.next; }else { p.next = p1; p1 = p1.next; } p = p.next; } if(p1 != null){ p.next = p1; } if(p2 != null){ p.next = p2; } return dummy.next; } }