博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java——数据结构(链表)
阅读量:5236 次
发布时间:2019-06-14

本文共 3088 字,大约阅读时间需要 10 分钟。

链表,可扩展长度,泛型。

public class Link {    Node header = null; //头结点    int length;//当前链表长度        class Node {        Node next = null;        private Object data;                public Node(Object data) {            this.data = data;        }                public Object GetData() {            return this.data;        }    }        /*     * 增加一个节点     */    public void addNode(Object data) {        Node node = new Node(data);//使用传入的数据新建一个节点                if(this.header == null) {            this.header = node;            this.length++;        }else {            Node ex = this.header; //创建一个节点用于遍历链表            //找到最后一个节点            while(ex.next != null) {                ex = ex.next;            }            ex.next = node;//将最后一个节点指向想要增加的节点            this.length++;//增加链表长度        }    }        /*     * 查询第i个节点的数据。     */    public Object GetLink(int i) {        if(this.header == null) {            return 0;        }        if(i > this.length) {            return 0;        }        Node ex = this.header;//创建一个节点用于遍历链表        int j = 1;                //找到第i个节点        while(j != i) {            ex = ex.next;            j++;        }        return ex.GetData();    }    /*     * 在第i个节点后插入数据     */    public void LinkInsert(int i, Object data) {        Node newNode = new Node(data);        Node ex = this.header;//创建一个节点用于遍历链表        int j = 1;        while(j != i) {            ex = ex.next;            j++;        }        Node ex_next = ex.next;        ex.next = newNode;        newNode.next = ex_next;        this.length++;    }        /*     * 删除第i个节点     */    public void LinkDelete(int i) {        Node ex = this.header;        int j = 1;        //找到要删除的节点的前一个节点        while(j != i-1) {            ex = ex.next;            j++;        }        Node ex_next = ex.next;        ex.next = ex_next.next;        this.length--;    }        /*     * 查找链表数据中等于data的,并返回其节点位置     */    public Object LocateElem(Object data) {        Node ex = this.header;        for(int j = 1; j < this.length; j++) {            if(ex.GetData() == data) {                return j;            }            ex = ex.next;        }        return 0;    }    public static void main(String[] args) {        Link list = new Link();        list.addNode(1);        list.addNode(1.6);        list.addNode("字");        System.out.println("当前链表长度:" + list.length);        System.out.print("当前链表:");        for(int i = 1; i <= list.length; i++) {            System.out.print(list.GetLink(i) + ",");        }        System.out.println();        list.LinkInsert(2, "数据");        System.out.print("当前链表:");        for(int i = 1; i <= list.length; i++) {            System.out.print(list.GetLink(i) + ",");        }        System.out.println();        list.LinkDelete(2);        System.out.print("当前链表:");        for(int i = 1; i <= list.length; i++) {            System.out.print(list.GetLink(i) + ",");        }        System.out.println();        System.out.println(list.LocateElem("数据"));    }}

main方法输出:

当前链表长度:3当前链表:1,1.6,字,当前链表:1,1.6,数据,字,当前链表:1,数据,字,2

 

转载于:https://www.cnblogs.com/xxbbtt/p/7563053.html

你可能感兴趣的文章
JSON跨域解决方案收集
查看>>
SSH框架整合总结
查看>>
图的深度优先遍历
查看>>
C# 之 提高WebService性能大数据量网络传输处理
查看>>
md5sum命令详解
查看>>
[bzoj1004] [HNOI2008] Cards
查看>>
应该是实例化对象的没有对属性赋值时,自动赋值为null,但不是空指针对象引用...
查看>>
原生HttpClient详细使用示例
查看>>
几道面试题
查看>>
Factory Design Pattern
查看>>
python中贪婪与非贪婪
查看>>
guava API整理
查看>>
无锁编程笔记
查看>>
jquery mobile
查看>>
如何在vue单页应用中使用百度地图
查看>>
Springboot使用步骤
查看>>
Spring属性注入
查看>>
Springboot-配置文件
查看>>
Springboot-日志框架
查看>>
SpringBoot-thymeleaf
查看>>