package test2;
class LinkNode{
private int iData;
private double dData;
LinkNode next;
public LinkNode(int i, double d){
iData = i;
dData = d;
}
public int getIdata(){
return iData;
}
public double getDdata(){
return dData;
}
public void displayLink(){
System.out.println("iData:"+iData+" dData :"+dData);
}
}
public class LinkList {
private LinkNode first;
public LinkList(){
first = null;
}
public boolean isEmpty(){
return first == null;//first对象指向的是第一个元素的引用地址,它的next值即第一个元素的next值
}
public void insertFront(int iData, double dData){
LinkNode tempLinkNode = new LinkNode(iData, dData);
tempLinkNode.next = first;
first = tempLinkNode;//此处要将first指向当前节点,而不是将first.next指向当前节点,方便display
}
public void deleteFirstNode(){
if(first != null){
LinkNode temp = first;
first = first.next;
System.out.println("----------------");
System.out.print("delete:");
temp.displayLink();
System.out.println("----------------");
}else{
System.out.println("first is null ");
}
}
public void findNode(int iData){
LinkNode temp = first;
while(temp != null){
if(temp.getIdata() == iData){
System.out.println("find it :linkNode:"+temp.getIdata()+" ---:"+temp.getDdata());
return;
}
else{
temp = temp.next;
}
if(temp == null){
System.out.println("------------");
System.out.println("not found it:"+iData);
return;
}
}
}
public void deleteNode(int iData){
LinkNode pre,current;
pre = first;
current = first;
while(current != null){
if(current.getIdata() == iData){
if(current == first){
first = current.next;
}else{
pre.next = current.next;//若要修改节点之间的指向,一定要修改next的值,如果
//仅修改pre或者current的值,仅仅代表临时变量的值改变了,不影响链表节点间的指向
}
System.out.println("------------");
System.out.println("delete it:");
current.displayLink();
System.out.println("------------");
//System.out.println("------------"+first);
return;
}else{
pre = current;
current = current.next;
}
if(current == null){
System.out.println("------------");
System.out.println("not found it:"+iData);
}
}
}
public void displayLinkList(){
LinkNode temp = first;
while(temp != null){
temp.displayLink();
temp = temp.next;
}
}
}
class TestClass{
public static void main(String args[]){
LinkList list = new LinkList();
list.insertFront(1, 2);
list.insertFront(2, 4);
list.insertFront(3, 5);
list.insertFront(4, 7);
list.displayLinkList();
list.deleteFirstNode();
list.displayLinkList();
list.findNode(22);
list.deleteNode(1);
list.displayLinkList();
list.deleteNode(3);
list.displayLinkList();
list.deleteNode(2);
list.displayLinkList();
}
}
输出结果:
iData:4 dData :7.0
iData:3 dData :5.0
iData:2 dData :4.0
iData:1 dData :2.0
----------------
delete:iData:4 dData :7.0
----------------
iData:3 dData :5.0
iData:2 dData :4.0
iData:1 dData :2.0
------------
not found it:22
------------
delete it:
iData:1 dData :2.0
------------
iData:3 dData :5.0
iData:2 dData :4.0
------------
delete it:
iData:3 dData :5.0
------------
iData:2 dData :4.0
------------
delete it:
iData:2 dData :4.0
------------
Java实现单链表
最新推荐文章于 2023-03-18 22:41:31 发布