tbwshc

          實現(xiàn)單鏈表的用java簡單的基本操作

          package com.tyxh.link;
            //節(jié)點類
            public class Node {
            protected Node next; //指針域
            protected int data;//數(shù)據(jù)域
            public Node( int data) {
            this. data = data;
            }
            //顯示此節(jié)點
            public void display() {
            System. out.print( data + " ");
            }
            }
            package com.tyxh.link;
            //單鏈表
            public class LinkList {
            public Node first; // 定義一個頭結(jié)點
            private int pos = 0;// 節(jié)點的位置
            public LinkList() {
            this. first = null;
            }
            // 插入一個頭節(jié)點
            public void addFirstNode( int data) {
            Node node = new Node(data);
            node. next = first;
            first = node;
            }
            // 刪除一個頭結(jié)點,并返回頭結(jié)點
            public Node deleteFirstNode() {
            Node tempNode = first;
            first = tempNode. next;
            return tempNode;
            }

            // 在任意位置插入節(jié)點 在index的后面插入
            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;
            }
            // 刪除任意位置的節(jié)點
            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;
            }
            // 根據(jù)節(jié)點的data刪除節(jié)點(僅僅刪除第一個)
            public Node deleteByData( int data) {
            Node current = first;
            Node previous = first; //記住上一個節(jié)點
            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;
            }
            // 顯示出所有的節(jié)點信息
            public void displayAllNodes() {
            Node current = first;
            while (current != null) {
            current.display();
            current = current. next;
            }
            System. out.println();
            }
            // 根據(jù)位置查找節(jié)點信息
            public Node findByPos( int index) {
            Node current = first;
            if ( pos != index) {
            current = current. next;
            pos++;
            }
            return current;
            }
            // 根據(jù)數(shù)據(jù)查找節(jié)點信息
            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;
            //測試類
            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);
            }
            }

          posted on 2013-09-10 17:10 chen11-1 閱讀(1324) 評論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 哈密市| 崇信县| 涡阳县| 南平市| 大田县| 武强县| 轮台县| 东乌珠穆沁旗| 乌什县| 宜兴市| 遂川县| 商丘市| 商洛市| 基隆市| 来安县| 武义县| 鹤峰县| 名山县| 富民县| 安宁市| 平舆县| 象州县| 东明县| 赣州市| 阿鲁科尔沁旗| 平安县| 牟定县| 周宁县| 洮南市| 泽州县| 扶绥县| 澎湖县| 广汉市| 宜兰市| 林西县| 东阳市| 濉溪县| 东至县| 鹿邑县| 西贡区| 和田县|