package com.java.datastructure.lineartable; // 线性表 - java循环列表实现方式 public class LoopLinkList { private Node head; public LoopLinkList() { head = new Node("head"); head.next = head; } public void addNode(String data) { Node p = head; Node insertData = new Node(data); //不存在元素 if (p==head.next) { p.next = insertData; insertData.next = head; return ; } //获取链表尾部 while (p.next!=head) { p = p.next; } p.next = insertData; insertData.next = head; } public void delNode(String data) { Node p = head; while (p.next!=head) { if(p.next.getName().equals(data)) { p.next = p.next.next; break; } else { p = p.next; } } } public void display(String begContetn) { Node p = head; while(p.next!=head) { System.out.println(begContetn+" Node name :"+p.next.getName()); p = p.next; } } public String findNode(String data) { Node p = head; while (p.next!=head.next) { if(p.next.getName().equals(data)) { return data; } else { p = p.next; } } return null; } public void insertBeforeNode(String befNode, String data) { Node p = head.next; while(p.next!=head.next) { if(p.next.getName().equals(befNode)) { Node temp = p.next; Node inserData = new Node(data); inserData.next = temp.next; temp.next = inserData; break; } else { p = p.next; } } } static class Node { private String name; private Node next; public Node() { } public Node(String name) { this.name = name; next = null; System.out.println("生产节点:" + name); } public String getName() { return name; } public void setName(String name) { this.name = name; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } } public static void main (String[] args) { LoopLinkList list = new LoopLinkList(); list.addNode("hcb2"); list.addNode("hcb3"); // list.display("show all"); // // list.insertBeforeNode("hcb2","hcb2-bef"); // list.display("show insert"); list.display("show del beg"); list.delNode("hcb2"); list.display("show del end"); } }
3. 线性表 - java循环链表实现方式
最新推荐文章于 2023-05-19 21:12:51 发布