Java 单链表简单实现

实现功能并不完全,只有添加,删除,和遍历功能,后续还会继续添加

定义节点属性

class Node{ //定义节点属性
    public int Data;
    public Node next = null;
    public Node(int Data){
        this.Data = Data;
    }
}

定义节点方法

class ListMe {
    Node head = null;//头结点为空

    void addNode(int data){ //添加节点
        Node newNode = new Node(data); //创建新节点
        if(head == null){   //如果头结点为空,就让节点作为头结点
            head = newNode;
            return;
        }
        Node temp = head;
        while(temp.next!=null){ //让节点遍历都最后一个位置
            temp = temp.next;
        }
        temp.next = newNode;   //添加节点
    }
    boolean  delNode(int position){  //删除节点
        if(position>listLength()||position<1){  //如果删除的位置不在指定地方,就返回false
            return false;
        }
        if(position == 1){ //头结点更换
            head = head.next;
            return true;
        }
        int i = 1;
        Node preNode = head;         //前驱节点
        Node curNode = preNode.next; //后一位节点
        while(curNode != null){     //后一位不为空,就遍历查找到指定位置的节点
            if( i == position){  //查找到之后就让前一位直接连到后一位节点位置上
                preNode.next = curNode.next;
                return true;
            }
            preNode = curNode; //节点后推
            curNode = curNode.next;
            i++;//位置
        }
        return false;
     }
    int listLength(){ //返回链表长度
        int length = 0;
        Node curNode = head;
        while(curNode != null){
            length++;
            curNode = curNode.next;
        }
        return length;
    }
    void print(){  //打印链表内容
        Node curNode = head;
        while(curNode != null){
            System.out.print(curNode.Data+" ");
            curNode = curNode.next;
        }
    }
}

主方法中测试数据

public class Main{
    public static void main(String[] args){
        ListMe a = new ListMe();
        a.addNode(2);
        a.addNode(1);
        a.addNode(5);
        a.addNode(4);
        a.addNode(3);
        a.print();
        System.out.println();
        System.out.println(a.listLength());
        if(a.delNode(1)){
            a.print();       System.out.println();
            System.out.println(a.listLength());
        }else{
            System.out.println("异常");
        }
    }
}

以下是运行结果

2 1 5 4 3

5

1 5 4 3

4

原文地址:https://www.cnblogs.com/wysAC666/p/9866113.html

时间: 2024-10-19 07:04:11

Java 单链表简单实现的相关文章

java 单链表的实现

package liaobiao;//链表测试public class Node { private int value; private Node next; //存放下一个节点的指针 //构造方法,进行传参 public Node(int value){ this.value = value; } public Node(){ } //像链表的尾部加入元素,需要先找到最后一个节点 public void addNode(Node n ){ //需要先找到最后一个节点 Node node =t

Java单链表、双端链表、有序链表实现

Java单链表.双端链表.有序链表实现 原创 2014年03月31日 23:45:35 标签: Java / 单链表 / 双端链表 / 有序链表 65040 单链表: insertFirst:在表头插入一个新的链接点,时间复杂度为O(1) deleteFirst:删除表头的链接点,时间复杂度为O(1) 有了这两个方法,就可以用单链表来实现一个栈了,见http://blog.csdn.net/a19881029/article/details/22579759 find:查找包含指定关键字的链接点

java单链表常用操作

总结提高,与君共勉 概述. 数据结构与算法亘古不变的主题,链表也是面试常考的问题,特别是手写代码常常出现,将从以下方面做个小结 [链表个数] [反转链表-循环] [反转链表-递归] [查找链表倒数第K个节点] [查找链表中间节点] [判断链表是否有环] [从尾到头打印单链表-递归] [从尾到头打印单链表-栈] [由小到大合并有序单链表-循环] [由小到大合并有序单链表-递归] 通常在java中这样定义单链表结构 <span style="font-family:Microsoft YaHe

java单链表

单链表 一.单链表的概念 链表是最基本的数据结构,其存储的你原理图如下图所示 上面展示的是一个单链表的存储原理图,简单易懂,head为头节点,他不存放任何的数据,只是充当一个指向链表中真正存放数据的第一个节点的作用,而每个节点中都有一个next引用,指向下一个节点,就这样一节一节往下面记录,直到最后一个节点,其中的next指向null. 链表有很多种,比如单链表,双链表等等.我们就对单链表进行学习,其他的懂了原理其实是一样的. 二.用java实现单链表 语言只是一种工具,数据结构真正体会的是那种

java单链表代码实现

用惯了C++,java写起来果然不太爽...不废话了,上代码... package javaInnerclassDemo; class Link{ class Node{ private String name; private Node next; public Node(String name){ this.name=name; } public void setname(String name){ this .name = name; } public String getname(){

JAVA单链表的实现-不带头结点且没有尾指针

本程序采用JAVA语言实现了线性表的链式实现.首先定义了线性表的接口ListInterface,然后LList类实现了ListInterface完成了链表的实现. 本实现中,链表是不带表头结点的,且有一个指针始终指向链表中的第一个元素,并没有定义尾指针.因此,每次向链表中插入新结点时需要遍历链表一次. 更详细的解释参考<数据结构与算法分析 JAVA语言描述第二版>Frank M. Carrano 著 ListInterface接口的定义如下: public interface ListInte

JAVA单链表的实现-不带头结点但带有尾指针

1,本程序实现了线性表的链式存储结构.实现的链表带有两个指针,一个始终指向链表中的第一个结点,另一个指针始终指向链表中的最后一个结点. 之所以设置尾指针,是因为,在插入元素到链表中的末尾时,可以通过尾指针直接找到链表的最后一个元素,从而不需要遍历链表就可以完成插入操作. 2,具体实现链表的类名为LList2.java,它首先实现了线性表的接口ListInterface,该接口的定义见:http://www.cnblogs.com/hapjin/p/4549492.html LList2.java

单链表简单实现c++

首先定义一个类,相关数据,函数封装,在头文件中 #pragma once class SingleList { public: typedef struct _NODE{ int nData; //数据域 _NODE *pNext; //指向下一个节点 }NODE,*PNODE; private: NODE * m_pHandNode; int m_nCount; public: SingleList(); ~SingleList(); bool InitList(); //初始化操作 bool

Java 单链表的倒置

在面试,笔试的过程中经常会遇到面试官问这种问题,实现单链表的倒置方法.现在对单链表的倒置犯法做个记录,方便自己以后查看. 单链表的定义: 1 public class Node { 2 3 int v; 4 Node next; 5 public Node(){ 6 } 7 public Node(int v){ 8 this.v = v; 9 } 10 11 public int getV() { 12 return v; 13 } 14 public void setV(int v) { 1