一、代码思路
1、定义一个链表结点的类;
2、定义一个单链表类,满足基本的增加结点、打印结点的操作即可;
3、定义打印两个有序链表的公共部分的函数;
二、代码演示
1、定义一个链表结点的类;
public class LinkNode {
public int data;
public LinkNode;
public LinkNode(int data){
this.data = data;
}
}
2、定义一个单链表类,满足基本的增加结点、打印结点的操作即可;
public class SingleLinkedList {
public LinkNode head; // 不赋初值的 head 就是一个指针,数据部分就是 null
public void add(LinkNode node){
if(head == null)head = node;
else {
LinkNode tempNode = head;
while (tempNode.next != null){
tempNode = tempNode.next;
}
tempNode.next = node;
}
}
public void printList(){
LinkNode tempNode = head;
while (tempNode != null){
System.out.println(tempNode.data);
tempNode = tempNode.next;
}
}
}
3、在测试类中定义打印两个有序链表的公共部分的函数;
public class test {
public static void main(String[] args) {
SingleLinkedList s1 = new SingleLinkedList();
s1.add(new LinkNode(1));
s1.add(new LinkNode(2));
s1.add(new LinkNode(3));
SingleLinkedList s2 = new SingleLinkedList();
s2.add(new LinkNode(1));
s2.add(new LinkNode(2));
s2.add(new LinkNode(4));
printListSamePart(s1.head,s2.head);
}
public static void printListSamePart(LinkNode h1, LinkNode h2){
while (h1 != null && h2 != null){
if(h1.data == h2.data) {
System.out.println(h1.data);
h1 = h1.next;
h2 = h2.next;
}
else if(h1.data > h2.data)h2 = h2.next;
else h1 = h1.next;
}
}
}
三、Java 基础新学
1、在单链表新定义的头指针不用赋值;
2、LinkedList 是 Java 自带的双向链表;