update at 2021-04-05 22:30:28 by ehlxr
This commit is contained in:
parent
2953e48009
commit
19161217b7
@ -24,6 +24,8 @@
|
|||||||
|
|
||||||
package io.github.ehlxr.datastructure.linkedlist;
|
package io.github.ehlxr.datastructure.linkedlist;
|
||||||
|
|
||||||
|
import java.util.Stack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author ehlxr
|
* @author ehlxr
|
||||||
* @since 2021-04-04 14:19.
|
* @since 2021-04-04 14:19.
|
||||||
@ -31,11 +33,10 @@ package io.github.ehlxr.datastructure.linkedlist;
|
|||||||
public class SingleLinkedListDemo {
|
public class SingleLinkedListDemo {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
HeroNode hero1 = new HeroNode(1, "宋江", "及时雨");
|
HeroNode hero1 = new HeroNode(1, "宋江", "及时雨");
|
||||||
HeroNode hero2 = new HeroNode(2, "卢俊义", "玉麒麟");
|
HeroNode hero2 = new HeroNode(3, "卢俊义", "玉麒麟");
|
||||||
HeroNode hero3 = new HeroNode(3, "吴用", "智多星");
|
HeroNode hero3 = new HeroNode(5, "吴用", "智多星");
|
||||||
HeroNode hero4 = new HeroNode(4, "林冲", "豹子头");
|
HeroNode hero4 = new HeroNode(8, "林冲", "豹子头");
|
||||||
|
|
||||||
//创建要给链表
|
|
||||||
SingleLinkedList singleLinkedList = new SingleLinkedList();
|
SingleLinkedList singleLinkedList = new SingleLinkedList();
|
||||||
|
|
||||||
// 加入
|
// 加入
|
||||||
@ -48,22 +49,31 @@ public class SingleLinkedListDemo {
|
|||||||
singleLinkedList.addByOrder(hero4);
|
singleLinkedList.addByOrder(hero4);
|
||||||
singleLinkedList.addByOrder(hero2);
|
singleLinkedList.addByOrder(hero2);
|
||||||
singleLinkedList.addByOrder(hero3);
|
singleLinkedList.addByOrder(hero3);
|
||||||
|
|
||||||
singleLinkedList.list();
|
singleLinkedList.list();
|
||||||
|
|
||||||
// 反转链表
|
// 反转链表
|
||||||
reverseList(singleLinkedList.getHead());
|
// reverseList(singleLinkedList.getHead());
|
||||||
System.out.println("反转之后的链表");
|
// System.out.println("反转之后的链表");
|
||||||
singleLinkedList.list();
|
// singleLinkedList.list();
|
||||||
|
//
|
||||||
|
// HeroNode newHeroNode = new HeroNode(3, "小吴", "智多星..");
|
||||||
|
// singleLinkedList.update(newHeroNode);
|
||||||
|
// System.out.println("修改后的链表");
|
||||||
|
// singleLinkedList.list();
|
||||||
|
//
|
||||||
|
// singleLinkedList.del(3);
|
||||||
|
// System.out.println("删除 no 为 3 的节点");
|
||||||
|
// singleLinkedList.list();
|
||||||
|
|
||||||
HeroNode newHeroNode = new HeroNode(3, "小吴", "智多星..");
|
SingleLinkedList singleLinkedList2 = new SingleLinkedList();
|
||||||
singleLinkedList.update(newHeroNode);
|
singleLinkedList2.addByOrder(new HeroNode(2, "2", "2"));
|
||||||
System.out.println("修改后的链表");
|
singleLinkedList2.addByOrder(new HeroNode(3, "3", "3"));
|
||||||
singleLinkedList.list();
|
singleLinkedList2.addByOrder(new HeroNode(8, "8", "8"));
|
||||||
|
singleLinkedList2.addByOrder(new HeroNode(9, "9", "9"));
|
||||||
|
singleLinkedList2.list();
|
||||||
|
|
||||||
|
bind2(singleLinkedList.getHead(), singleLinkedList2.getHead());
|
||||||
|
|
||||||
singleLinkedList.del(3);
|
|
||||||
System.out.println("删除 no 为 3 的节点");
|
|
||||||
singleLinkedList.list();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -84,6 +94,75 @@ public class SingleLinkedListDemo {
|
|||||||
|
|
||||||
head.next = pre;
|
head.next = pre;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合并有序链表
|
||||||
|
*/
|
||||||
|
public static void bind2(HeroNode node1, HeroNode node2) {
|
||||||
|
Stack<HeroNode> stack = new Stack<>();
|
||||||
|
|
||||||
|
HeroNode cur = node1.next;
|
||||||
|
while (cur != null) {
|
||||||
|
stack.push(cur);
|
||||||
|
cur = cur.next;
|
||||||
|
}
|
||||||
|
|
||||||
|
cur = node2.next;
|
||||||
|
while (cur != null) {
|
||||||
|
stack.push(cur);
|
||||||
|
cur = cur.next;
|
||||||
|
}
|
||||||
|
|
||||||
|
SingleLinkedList result = new SingleLinkedList();
|
||||||
|
for (HeroNode node : stack) {
|
||||||
|
result.addByOrder(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打印结果
|
||||||
|
System.out.println("合并结果");
|
||||||
|
result.list(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合并有序链表
|
||||||
|
*/
|
||||||
|
public static void bind(HeroNode node1, HeroNode node2) {
|
||||||
|
SingleLinkedList result = new SingleLinkedList();
|
||||||
|
|
||||||
|
if (node1.next == null) {
|
||||||
|
result.add(node2.next);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (node2.next == null) {
|
||||||
|
result.add(node1.next);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while (node1.next != null || node2.next != null) {
|
||||||
|
HeroNode temp = null;
|
||||||
|
if (node1.next == null) {
|
||||||
|
result.add(node2.next);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (node2.next == null) {
|
||||||
|
result.add(node1.next);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (node1.next.no < node2.next.no) {
|
||||||
|
temp = node1.next;
|
||||||
|
node1.next = node1.next.next;
|
||||||
|
} else {
|
||||||
|
temp = node2.next;
|
||||||
|
node2.next = node2.next.next;
|
||||||
|
}
|
||||||
|
|
||||||
|
temp.next = null;
|
||||||
|
result.add(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打印结果
|
||||||
|
System.out.println("合并结果");
|
||||||
|
result.list();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SingleLinkedList {
|
class SingleLinkedList {
|
||||||
|
Loading…
Reference in New Issue
Block a user