栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

单链表Java的实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

单链表Java的实现

前言:

        最近在复习数据结构与算法的时候,之前上课的时候是使用C++来实现的,现在在学习Java就想着用Java实现一遍,因为链表的代码老实说还得自己过一遍,在搜索的时候觉得别人的代码有些关键的节点代码觉得写的不是很清晰,所以自己写一遍会更好, 然后现在分享出来也是希望能收获到反馈,因为链表的关键就是边界条件特别多。希望大家多多指教!!

正文:

        其中包括了头增加和尾增加,根据相应位置增加还有相应位置的删除。和我看到的大部分实现不同的地方在于,找到相应的位置我是用另外的函数去获取相应的节点的。需要注意的还有一点,就是我的Index是从1开始,也就是0是头节点。比如:删除节点,如果index等于1,则是删除第一个有效节点,头节点不算有效节点。

具体的代码实现:

package com.base.algorithm;


class Node {  //写public 是为了不用写set和get方法
    public int data;
    public Node next;
    public Node(int data) {
        this.data = data;
    }
}
class linkedList1{  //和linkedlink类重名了
    public Node head;
    public int len;
    public linkedList1(){
        head = new Node(0);
        len = 0;
    }
    public void insertNode(int index, int data){  // 在指定位置插入一个新的节点,插入后它的index就等于该index
        if(index <= 0 || index > len){
            System.out.println("传入参数错误");
            return;
        }
        Node newNode = new Node(data);
        Node indexNode = returnIndexNode(index);
        newNode.next = indexNode.next;
        indexNode.next = newNode;
        len++;
    }
    public void addNodeHead(int data){ //头插入
        Node newNode = new Node(data);
        newNode.next = head.next;
        head.next = newNode;
        len++;
    }
    public void addNodeTail(int data){ //尾插入
        Node newNode = new Node(data);
        Node temp = head;
        while(temp.next != null){
            temp = temp.next;
        }
        temp.next = newNode;
        len++;
    }
    public Node returnIndexNode(int index){  //返回目标位置的前一个节点
        int point = 1;
        Node temp = head;
        while(temp!=null && point len){
            System.out.println("传入参数错误");
            return;
        }
        Node indexNode = returnIndexNode(index);
        indexNode.next = indexNode.next.next;
        len--;
    }
    public void display(){
        Node p = head.next;
        while(p != null){
            System.out.println(p.data);
            p = p.next;
        }
    }
}
public class linkedListTest {
    public static void main(String[] args) {
        linkedList1 node = new linkedList1();
        node.addNodeTail(1);
        node.addNodeTail(2);
        node.addNodeTail(3);
        node.addNodeHead(8);
        node.insertNode(2,9);
        node.display();
        System.out.println("------------");
        node.deleteNode(1);
        node.display();
    }
}

 输出的结果:

 总结:

         数据结构Java实现我也会继续更新,主要是想先放出来得到大家的反馈,然后再不断完善和修改。希望看到的大们多多指正,得到反馈我也会立马思考并进行改正,谢谢大家

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/732333.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号