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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值