package node.SinglyLinkedList; /** * @author Eightn0 * @create 2021-03-12 14:12 */ //首先定义Node类 class Node{ int data; int np; String names; Node next; public Node(int data, int np, String names) { this.data = data; this.np = np; this.names = names; this.next = null; } } public class LinkedList { private Node first; private Node last; private Node delNode; Node newNode; //判断目前链表是否是空链表 public boolean isEmpty(){ return first == null; } //用来将目前的链表内容打印出来 public void print(){ Node current = first; while (current != null){ System.out.println(current.data + current.names + current.np ); current = current.next; } System.out.println(); } //用来将指定的节点插入至目前的链表 public void insert(int data, String names, int np){ newNode = new Node(data, np, names); if (this.isEmpty()){ first = newNode; last = newNode; }else { last.next = newNode; last = newNode; } } //删除列表的第一个节点 public void deletePre(){ first = first.next; } //删除列表中间的节点,将删除节点的前一个节点的指针,指向欲删除节点的下一个节点 public void deleteMid(){ newNode = first; Node tmp = first; while(newNode.data != delNode.data){ tmp = newNode; newNode = newNode.next; } tmp.next = delNode.next; } //删除列表最后一个节点 public void deleteLast(){ newNode = first; while (newNode.next != last) newNode = newNode.next; newNode.next = last.next; last = newNode; } /*插入节点: * 在表头插入:令新节点指向表头,将表头移到新节点上 * 在表尾插入:令表尾指向新节点,令新节点指向null * 在XY中间插入,令X指向新节点,令新节点指向Y * */ public void insert(Node ptr){ Node tmp; Node newNode; if (this.isEmpty()){ first = ptr; last = ptr; }else { if (ptr.next == first){ //插入第一个节点 ptr.next = first; first = ptr; }else { if (ptr.next == null){//插入最后一个节点 last.next = ptr; last = ptr; }else {//插入中间节点 newNode = first; tmp = first; while (ptr.next != newNode.next){ tmp = newNode; newNode = newNode.next; } tmp.next = ptr; ptr.next = newNode; } } } } }
如何操作单向链表
猜你喜欢
转载自blog.csdn.net/vivian233/article/details/114697663
今日推荐
周排行