Java数据结构——单链表

一、单链表的概念

单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。这组存储单元可以是连续的,也可以是不连续的。

存储单元由两部分组成,数据源和指针,数据源放数据,指针指向下个存储单元。

二、单链表的结构

采用Node实体类类标识,其中data为存储的数据,next为下一个结点的指针。

//链表的实体类
class Node{
    public int data;
    public Node next;
    public Node(int data) {
        this.data = data;
    }
}

三、单链表的常见操作

package org.learn.link;

public class TestList {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MyLinkedLsit mylist = new MyLinkedLsit();
        mylist.addNodeH(22);
        mylist.addNodeH(32);
        mylist.addNodeH(25);
        mylist.addNodeH(11);

        MyLinkedLsit mylist1 = new MyLinkedLsit();
        mylist.print();
        System.out.println("链表的长度:"+mylist.getLength());
        mylist.delete(1);
        mylist.print();

    }

}

class MyLinkedLsit{

    //初始化头结点(不存放具体数据)
    Node head = new Node(0);

    //添加结点(尾插法)
    public void addNodeT(int data) {
        Node newnode = new Node(data);//生成新结点
        Node cur = head;//当前结点
        while(cur.next != null) {//找到最后一个结点
            cur = cur.next;
        }
        cur.next = newnode;
    }

    //添加结点(头插法)
    public void addNodeH(int data) {
        Node newnode = new Node(data);//生成新结点
        Node cur = head;//当前结点
        newnode.next = head.next;
        head.next = newnode;
    }
    //获取链表的长度
    public int getLength() {
        int length = 0;
        Node cur = head.next;
        while(cur != null) {
            length++;
            cur = cur.next;
        }
        return length;
    }
    //删除第k个结点
    public void delete(int k) {
        if(k<1 || k>getLength()) {
            System.out.println("待删除的结点不存在");
            return;
        }
        int i = 1;
        Node cur = head;
        while(cur.next != null) {
            if(i == k) {
                cur.next = cur.next.next;
                return;
            }
            else
            {
                cur = cur.next;
                i++;
            }
        }
    }

    //显示结点
    public void print() {
        Node cur = head.next;
        while(cur != null) {
            System.out.print(cur.data +" ");
            cur = cur.next;
        }
        System.out.println();
    }

}

//链表结点的实体类
class Node{
    int data;//结点数据
    Node next;//下一个结点

    public Node(int data) {
        this.data = data;
    }    

}

原文地址:https://www.cnblogs.com/sea-moon/p/12045615.html

时间: 2024-08-09 23:50:18

Java数据结构——单链表的相关文章

java实现单链表

前面已经介绍了java如何实现顺序链表:http://www.cnblogs.com/lixiaolun/p/4643664.html 接下来,我们开始学习java实现单链表. 单链表类 package linklist; public class LinkList { class Element { public Object value=null; private Element next=null; } private Element header = null;//头结点 /** * 初

java 实现单链表的逆序

</pre><pre name="code" class="java">package com.ckw.mianshi; /** * java 实现单链表的逆序 * @author Administrator * */ public class SingleLinkedReverse { class Node{ int data; Node next; public Node(int data){ this.data = data; } }

JAVA 实现单链表

1 public class LinkNode { 2 public String data; 3 public LinkNode next; 4 5 LinkNode(){ 6 this.data = "a"; 7 this.next = null; 8 } 9 10 LinkNode(String string){ 11 this.data = string; 12 this.next = null; 13 } 14 } 1 public class LinkList { 2 3

Java 实现单链表反序

//单链表反序 public class SingleLinkedListReverse { public static void main(String[] args) { Node head = new Node(0); Node temp = null; Node cur = null; for (int i = 1; i <= 10; i++) { temp = new Node(i); if (i == 1) { head.setNext(temp); } else { cur.set

python实现数据结构单链表

#python实现数据结构单链表 # -*- coding: utf-8 -*- class Node(object): """节点""" def __init__(self, elem): self.elem = elem self.next = None # 节点一开始初始化的时候并不知道下一个元素的地址,所以先设置为空 class SingLinkList(object): """单链表""

数据结构复习--java实现单链表基本操作

单链表的基本操作包括建立单链表.查找运算(按序查找和按值查找).插入运算(前插和后插)和删除运算.下面给出具体的java实现程序: package com.zpp.test; //首先创建一个节点类 public class Node { private Node next; //指针域 private int data;//数据域 public Node( int data) { this. data = data; } } package com.zpp.test; public class

数据结构—单链表(类C语言描写叙述)

单链表 1.链接存储方法 链接方式存储的线性表简称为链表(Linked List). 链表的详细存储表示为: ① 用一组随意的存储单元来存放线性表的结点(这组存储单元既能够是连续的.也能够是不连续的) ② 链表中结点的逻辑次序和物理次序不一定同样.为了能正确表示结点间的逻辑关系,在存储每一个结点值的同一时候,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link)) 注意: 链式存储是最经常使用的存储方式之中的一个.它不仅可用来表示线性表.并且可用来表示各种非线性

Java 模拟单链表

线性表: 线性表(亦作顺序表)是最基本.最简单.也是最常用的一种数据结构. 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的. 线性表的逻辑结构简单,便于实现和操作. 在实际应用中,线性表都是以栈.队列.字符串等特殊线性表的形式来使用的. 线性结构的基本特征为: 1.集合中必存在唯一的一个"第一元素": 2.集合中必存在唯一的一个 "最后元素" : 3.除最后一个元素之外,均有 唯一的后继(后件): 4.除第一

用java实现单链表

对于一个单链表来说,要求有最基本的数据节点以及一些重要的方法. 方法应该有增删改查.定位.输出.获取链表长度.排序.链表读入.链表输出.下面是我用java写的单链表 public class List { public class Node{//定义节点 public int data; public Node next; public Node(int data){ this.data = data; } } private Node head;//头节点 public Node getHea