JAVA数据结构单向链表实现

        曾几何时学习过数据结构,记得不太清楚了,好像是12年前的大学C语言版。今天拿出现保留的唯一一本大学教材,翻看时感觉还是那么的经典,真心佩服我校老师的水平,只可惜了教材内部使用。

        现在用JAVA实现单向列表,表头插入、随机修改、随机删除,为了简单易懂,顺序查找实现,水平有限希望同行吐槽。

package com.zhaoyx.util;

public class Test {

        public static void main(String[] args) {

                LinkNode<String> link = new LinkNode<String>();

                link.addNode("String1");

                link.addNode("String2");

                link.addNode("String3");

                System.out.println(link.getNode(0));

                System.out.println(link.getNode(1));

                System.out.println(link.getNode(2));

                link.putNode(1, "String4");

                System.out.println(link.getNode(1));

                link.removeNode(1);

                System.out.println(link.getNode(1));

        }

}

class LinkNode<E> {

        E object;

        LinkNode<E> next;

        int length = 0;

        

        public LinkNode() {

        }

        

        public void addNode(E e) {

                if(0 == length) {

                        next = new LinkNode<E>();

                        next.object = e;

                } else {

                        LinkNode<E> head = new LinkNode<E>();

                        head.object = e;

                        head.next = next;

                        next = head;

                }

                length++;

        }

        

        public void removeNode(int index) {

                if(index >= length) return;

                LinkNode<E> n1 = next;

                LinkNode<E> n2 = next;

                for(int i = 0; i < index; i++) {

                        n1 = n2;

                        n2 = n2.next;

                }

                n1.next = n2.next;

                n2.next = null;

                length--;

        }

        

        public void putNode(int index,E e) {

                if(index >= length) return;

                LinkNode<E> n = next;

                for(int i = 0; i < index; i++) {

                        n = n.next;

                }

                n.object = e;

        }

        

        public E getNode(int index) {

                if(index >= length) return null;

                LinkNode<E> n = next;

                for(int i = 0; i < index; i++) {

                        n = n.next;

                }

                return n.object;

        }

}

运行结果:

String3

String2

String1

String4

String1

猜你喜欢

转载自zhaoyx.iteye.com/blog/2217312