原题:根据有序表L2的值删除链表L1的节点。比如:L1 = {A,B,C,D,E,F}, L2={1,2,3,10}
那么删除之后L1={A,E,F},因为节点10不存在
下面是节点类(也为了其他测试的用途,实现了一个copy接口)
public class Node implements Cloneable {
public String value;
public Node next;
public Node(String value, Node next) {
this.value = value;
this.next = next;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
下面是主函数方法~
其中L2我采用了一个数组来存储
public class MinusList {
public static void main(String[] args) {
Node a0 = new Node("a0",null);
Node a1 = new Node("a1",null);
Node a2 = new Node("a2",null);
Node a3 = new Node("a3",null);
Node a4 = new Node("a4",null);
Node a5 = new Node("a5",null);
Node a6 = new Node("a6",null);
a0.next = a1;
a1.next = a2;
a2.next = a3;
a3.next = a4;
a4.next = a5;
a5.next = a6;
int[] array = {2,4,8};
Node head = a0;
Node t = head;
Node t2;
for(int i=0; i < array.length; i++) {
int steps = array[i];
if(i != 0) {
steps = array[i] - array[i-1];
}
for(; (steps > 1) && (t != null); steps--) { //让t指向目标节点的上一个节点
t = t.next;
}
if(t != null) {
t2 = t.next;
t.next = t.next.next;
t2 = null;
}
}
//print all nodes
t = head;
while(t != null) {
System.out.print(t.value + " ");
t = t.next;
}
}
}
分享到:
相关推荐
创建一个新的链表节点作为头节点(记得保存),然后判断 l1 和 l2 头节点的值,将较小值的节点添加到新的链表中。然后继续判断当前 l1 节点和当前 l2 节点
设计一个通用链表类模板,可支持在链头插入元素、在链尾插入元素、将元素插入有序链的适当位置使链表保持升序、查找链表中第一个关键字节点(链表中可能有多个相同值的节点,找到其中第一个出现的节点)、删除链表中...
* 如果l1和l2都不为空,则一直循环取值比较//如果l1比l2小,将l1赋值给listNode的下一个节点,l1指针下移* 如果一个链表空了,则将另一个链表复
本文实例讲述了Python实现合并两个有序链表的方法。分享给大家供大家参考,具体如下: 思路:先选出第一个节点,然后遍历两个链表,把小的作为当前节点的下一个节点,一直到其中一... def mergeTwoLists(self, l1, l2
剑指offer:合并两个排序的链表,Python实现 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表...找到两个链表中头节点值相对更小的链表,将其作为主链表,第二个链表中的元素
因为每次循环迭代中,l1 和 l2 只有一个元素会被放进合并链表中, 因此 while 循环的次数不会超过两个链表的长度之和。所有其他操作的时间复杂度都是常数级别的,因此总的时间复杂度为 O(n+m)。 空间复杂度:O(1) 。...
L1节点【1】和L2节点【1】比较完成后,需要修改1.next指针,以指向它的下个节点。 第二步: 现在我们获取到了L2链表【1】,那它的next指向谁?也就是L2链表【1】去和L1链表的【2】进行比较。 比较完成后,L2链表【1...
合并两个有序列表 题目 将两个有序链表合并为一个...先判断L1,L2是否为空,接下来通过循环来将两个列表中的元素按从小到大进行合并,最后返回的列表即为所求得的合并的列表。 代码实现 运行结果 这个方法思路简单,
删除倒数第N个节点。 链表是否有环 双指针 L11 成最多水的容器。167. 两数之和 II - 输入有序数组。 L977有序数组的平方 3 回溯算法 L79 单词搜索:再字母矩阵中搜索单词 L39 组合求和 L46 全排列 4 数组 L566...
E. *整理函数tideup:在非递减有序的单链表中删除值相同的多余结点。 实验报告要求: 按要求写出完整的实验代码; <br>实验三 堆栈结构与递归 实验目的: 通过实验掌握下列知识: 1、掌握堆栈...