锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
銆銆//鑺傜偣綾?br />銆銆public class Node {
銆銆protected Node next; //鎸囬拡鍩?br />銆銆protected int data;//鏁版嵁鍩?br />銆銆public Node( int data) {
銆銆this. data = data;
銆銆}
銆銆//鏄劇ず姝よ妭鐐?br />銆銆public void display() {
銆銆System. out.print( data + " ");
銆銆}
銆銆}
銆銆package com.tyxh.link;
銆銆//鍗曢摼琛?br />銆銆public class LinkList {
銆銆public Node first; // 瀹氫箟涓涓ご緇撶偣
銆銆private int pos = 0;// 鑺傜偣鐨勪綅緗?br />銆銆public LinkList() {
銆銆this. first = null;
銆銆}
銆銆// 鎻掑叆涓涓ご鑺傜偣
銆銆public void addFirstNode( int data) {
銆銆Node node = new Node(data);
銆銆node. next = first;
銆銆first = node;
銆銆}
銆銆// 鍒犻櫎涓涓ご緇撶偣錛屽茍榪斿洖澶寸粨鐐?br />銆銆public Node deleteFirstNode() {
銆銆Node tempNode = first;
銆銆first = tempNode. next;
銆銆return tempNode;
銆銆}
銆銆// 鍦ㄤ換鎰忎綅緗彃鍏ヨ妭鐐?鍦╥ndex鐨勫悗闈㈡彃鍏?br />銆銆public void add(int index, int data) {
銆銆Node node = new Node(data);
銆銆Node current = first;
銆銆Node previous = first;
銆銆while ( pos != index) {
銆銆previous = current;
銆銆current = current. next;
銆銆pos++;
銆銆}
銆銆node. next = current;
銆銆previous. next = node;
銆銆pos = 0;
銆銆}
銆銆// 鍒犻櫎浠繪剰浣嶇疆鐨勮妭鐐?br />銆銆public Node deleteByPos( int index) {
銆銆Node current = first;
銆銆Node previous = first;
銆銆while ( pos != index) {
銆銆pos++;
銆銆previous = current;
銆銆current = current. next;
銆銆}
銆銆if(current == first) {
銆銆first = first. next;
銆銆} else {
銆銆pos = 0;
銆銆previous. next = current. next;
銆銆}
銆銆return current;
銆銆}
銆銆// 鏍規(guī)嵁鑺傜偣鐨刣ata鍒犻櫎鑺傜偣(浠呬粎鍒犻櫎絎竴涓?
銆銆public Node deleteByData( int data) {
銆銆Node current = first;
銆銆Node previous = first; //璁頒綇涓婁竴涓妭鐐?br />銆銆while (current. data != data) {
銆銆if (current. next == null) {
銆銆return null;
銆銆}
銆銆previous = current;
銆銆current = current. next;
銆銆}
銆銆if(current == first) {
銆銆first = first. next;
銆銆} else {
銆銆previous. next = current. next;
銆銆}
銆銆return current;
銆銆}
銆銆// 鏄劇ず鍑烘墍鏈夌殑鑺傜偣淇℃伅
銆銆public void displayAllNodes() {
銆銆Node current = first;
銆銆while (current != null) {
銆銆current.display();
銆銆current = current. next;
銆銆}
銆銆System. out.println();
銆銆}
銆銆// 鏍規(guī)嵁浣嶇疆鏌ユ壘鑺傜偣淇℃伅
銆銆public Node findByPos( int index) {
銆銆Node current = first;
銆銆if ( pos != index) {
銆銆current = current. next;
銆銆pos++;
銆銆}
銆銆return current;
銆銆}
銆銆// 鏍規(guī)嵁鏁版嵁鏌ユ壘鑺傜偣淇℃伅
銆銆public Node findByData( int data) {
銆銆Node current = first;
銆銆while (current. data != data) {
銆銆if (current. next == null)
銆銆return null;
銆銆current = current. next;
銆銆}
銆銆return current;
銆銆}
銆銆}
銆銆package com.tyxh.link;
銆銆//嫻嬭瘯綾?br />銆銆public class TestLinkList {
銆銆public static void main(String[] args) {
銆銆LinkList linkList = new LinkList();
銆銆linkList.addFirstNode(20);
銆銆linkList.addFirstNode(21);
銆銆linkList.addFirstNode(19);
銆銆//19,21,20
銆銆linkList.add(1, 22); //19,22,21,20
銆銆linkList.add(2, 23); //19,22,23,21,20
銆銆linkList.add(3, 99); //19,22,23,99,21,20
銆銆linkList.displayAllNodes();
銆銆// Node node = linkList.deleteFirstNode();
銆銆// System.out.println("node : " + node.data);
銆銆// linkList.displayAllNodes();
銆銆// node = linkList.deleteByPos(2);
銆銆// System.out.println("node : " + node.data);
銆銆// linkList.displayAllNodes();
銆銆// linkList.deleteFirstNode();
銆銆Node node = linkList.deleteByData(19);
銆銆// Node node = linkList.deleteByPos(0);
銆銆System. out.println( "node : " + node. data);
銆銆linkList.displayAllNodes();
銆銆Node node1 = linkList.findByPos(0);
銆銆System. out.println( "node1: " + node1. data);
銆銆Node node2 = linkList.findByData(22);
銆銆System. out.println( "node2: " + node2. data);
銆銆}
銆銆}