自己用20分钟java实现的单向链表(含有增删改查操作)
package test1; // 建立一个链表结构 public class SingleList { //定义头结点指针 Node head = null; //定义链表的节点数据结构 class Node{ int val; Node next; public Node(int val){ this.val = val; next = null; } } //在链表的尾部增加一个节点 public void add(int num){ Node node = new Node(num); if(head==null) head=node; else search().next=node; } //获得链表尾部的节点 public Node search(){ Node nodelast = head; while(nodelast.next!=null){ nodelast = nodelast.next; } return nodelast; } //实现查找链表中特定的某个节点的数据为num并且返回该节点 public Node search(int num){ Node nodelast = head; while(nodelast.next!=null){ if(nodelast.val==num) return nodelast; nodelast = nodelast.next; } return null; } //实现查找链表中特定的某个节点下一个节点的数据为num并且返回该节点 public Node searchprevious(int num){ Node nodelast = head; while(nodelast.next!=null){ if(nodelast.next.val==num) return nodelast; nodelast = nodelast.next; } return null; } //更改链表中的操作 public void change(int num,int numnew){ if(search(num)!=null) search(num).val=numnew; } //删除链表的某个节点 public void delete(int num){ if(search(num)!=null) searchprevious(num).next = search(num).next; } //打印链表 public void printList(){ Node cur = head; while(cur!=null){ System.out.println(cur.val); cur=cur.next; } } public static void main(String[] args) { SingleList singlelist = new SingleList(); singlelist.add(1); singlelist.add(2); singlelist.add(3); singlelist.add(4); singlelist.change(3,8); singlelist.delete(8); singlelist.printList(); // while(singlelist.head!=null){ // System.out.println(singlelist.head.val); // singlelist.head=singlelist.head.next; // } } }
注意事项 1 在SingleList中定义一个head节点 2 注意如何实现链表删除操作的 3 疑问 在任何非main的函数中都可以 使用Node node = new Node(num);但是为何
在main函数中就不行了呢。我知道这是内部类的范畴