1+
JAVA版单链表的实现,其实只要理解思想就行,用什么语言实现不是问题。在此给出我用JAVA实现的简单单链表基本操作:
一共有三个类:
Node.java:定义单链表节点
NodeList.java:单链表操作类
main:测试类
public class Node { public Node next; public int data; public Node(int data) { this.data=data; } }
public class NodeList { public Node firstListNode = null; //节点长度 public int NodeLength = 0; /** * 打印出所有节点信息 * @CreatDate 2019年1月24日 下午2:24:32 */ public void displayAll() { Node disNode=firstListNode; while (disNode!=null) { System.out.println(disNode.data); disNode=disNode.next; } } /** * 插入一个头节点(不删除原头节点) * * @CreatDate 2019年1月24日 下午1:34:15 * @param val */ public void insertFirstNode(int val) { Node node = new Node(val); node.next = firstListNode; firstListNode = node; NodeLength++; } /** * 删除头节点,并返回头结点 * * @CreatDate 2019年1月24日 下午1:33:59 * @return 头结点 */ public Node deleteFirstNode() { Node node = firstListNode; firstListNode = node.next; NodeLength--; return node; } /** * 增加一个节点 * @CreatDate 2019年1月24日 下午2:18:56 * @param val 要增加的节点值 */ public void add(int val) { if(NodeLength!=0) { Node node=new Node(val); findByindex(NodeLength).next=node; NodeLength++; }else { insertFirstNode(val); } } /** * 任意位置后插入节点 * * @CreatDate 2019年1月24日 下午1:20:17 * @param index * 节点位置(从1开始) * @param val * 要插入的节点值 * @return 执行结果,成功返回true,否则返回false */ public boolean insertAfter(int index, int val) { Node node = new Node(val); //判断节点位置是否规范 if (index > 0 && index <= NodeLength) { Node frontNode = findByindex(index); Node tempNode = frontNode.next; frontNode.next = node; node.next = tempNode; NodeLength++; return true; } else { return false; } } /** * 根据节点位置(从1开始)删除节点 * * @CreatDate 2019年1月24日 下午2:00:48 * @param index * index 节点位置(从1开始) * @return 执行结果,成功返回true,否则返回false */ public boolean delateByindex(int index) { //判断节点位置是否规范 if (index > 0 && index <= NodeLength) { if(index!=1) { Node node=findByindex(index-1); Node temNode=node.next.next; node.next=temNode; NodeLength--; }else { deleteFirstNode(); } return true; }else { return false; } } /** * 根据节点位置(从1开始)查找返回节点 * * @CreatDate 2019年1月24日 下午1:19:19 * @param index * 节点位置(从1开始) * @return 对应节点,如果节点位置不规范返回null */ public Node findByindex(int index) { //判断节点位置是否规范 if (index > 0 && index <= NodeLength) { Node node = firstListNode; int pos = 1; while (pos != index) { node = node.next; pos++; } return node; } else { return null; } } }
public class Main { public static void main(String[] args) { NodeList nodeList=new NodeList(); nodeList.add(1); nodeList.add(8); nodeList.displayAll(); System.out.println(nodeList.insertAfter(1, 5)); nodeList.displayAll(); } }
运行结果:
1+