链表的实现原理

链表的实现原理

  存储结构:

    data为链表存储的数据,node则是向下一个元素的对象,若node为null,则表示该元素为该个链表的最后一个元素

    

 java实现

 

package com.study;

/**
 * 链表实体
 *
 * @author qiutianyou
 *
 */
class Linked {
    public int count;//统计新增次数
    public Node root;// 根节点
    /**
     * 新增
     * @param data
     */
    public void add(String data) {
        Node newNode = new Node(data);//生成新节点
        if (this.root == null) {//如果根节点不存在
            this.root = newNode;
        } else {
            this.root.addNode(newNode);
        }
        count++;
    }
    /**
     * 输出
     */
    public void print() {
        if (this.root != null) {
            this.root.printNode();
        }
    }
    /**
     * 链表的长度
     * @return
     */
    public int size() {
        return count;
    }

    /**
     * 私有的节点实体类
     *
     * @author qiutianyou
     *
     */
    private class Node {
        String data;
        Node next;

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

        public void addNode(Node newNode) {
            if (this.next == null) {
                this.next = newNode;
            } else {
                this.next.addNode(newNode);
            }
        }
        /**
         * 递归调用printNode,输出;链表存储的data
         */
        public void printNode() {
            System.out.println(this.data);//第一次 this=root,第二次调用时 this=root.next,第三次调用时 this=root.next.next
            if (this.next != null) {
                this.next.printNode();
            }
        }
    }

}

 

时间: 2024-10-12 17:05:09

链表的实现原理的相关文章

java数据结构与算法之双链表设计与实现

转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/53047590 出自[zejian的博客] 关联文章: 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) ??上一篇文章分析顺序表和单链表,本篇就接着上篇继续聊链表,在单链表

链表的三个关键赋值

//声明旧结点为prev,新结点为current //声明结点为结构体指针,便于地址的值传递与使用函数时的传参 1. prev->next = current //旧结点指向新结点,相当于将新结点串到链表上 2.prev = current //将结点串到尾结点上,以便于随后malloc一个新的结点,再串入链表中 3.current = current->next //链表遍历,原理是结构体内可以含有结构体指针,使得next存储的地址为下一结点的地址,即next指向下一结点.这时只要声明cur

我理解的顺序表和链表存储

写点什么东西对自己总有好处,证明自己还在努力的学习. 每天的积累总对自己有好处.今天就来总结一下我们的常用的数据结构. 1.顺序表存储结构(典型的数组) 原理:顺序表存储是将数据元素放到一块连续的内存存储空间,存取效率高,速度快.但是不可以动态增加长度. 优点:存取速度高效,通过下标来直接存储. 缺点:1.插入和删除比较慢,2.不可以增长长度. 比如:插入或者删除一个元素时,整个表需要遍历移动元素来重新排一次顺序. 时间性能 :查找  O(1) ,插入和删除O(n). 2.链表存储结构 原理:链

JAVA 链表操作:单连表和双链表

主要讲述几点: 一.链表的简介 二.链表实现原理和必要性 三.单链表示例 四.双链表示例 一.链表的简介 链表是一种比较常用的数据结构,链表虽然保存比较复杂,但是在查询时候比较便捷,在多种计算机语言都相应的应用,链表有多种类别,文章针对单链表和双链表进行分析.链表中数据就像被一个链条串联一起,轻易的可以实现数据的访问. 二.链表实现原理和必要性 这里只分析单链表和双链表.链表的实现过程是有些许复杂的,但是会带来许多好处.比如现在网购时代到来,商家发快递一般会将商品包装在盒子里并写上地址信息,快递

9秒学院C++模版类实现单链表

先上代码 /********************************线性表抽象类的定义***************************/ template <class dataType> class list{ public: virtual void empty()=0;   //清空线性表 virtual int getLength()=0;   //求表的长度 virtual void insert(int i,const dataType& x)=0;   //

Java-链表(单向链表、双向链表)

Java-链表 1.什么是链表? 2.链表的特点是什么? 3.链表的实现原理? 4.如何自己写出一个链表? 1.什么是链表? 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针连接次序实现的. 每一个链表都包含多个节点,节点又包含两个部分,一个是数据域(储存节点含有的信息),一个是引用域(储存下一个节点或者上一个节点的地址). 链表的理解示意图 2.链表的特点是什么? 获取数据麻烦,需要遍历查找,比数组慢 方便插入.删除 3.链表的实现原理 创建一个节点类,其

静态链表过程演示及代码实现(A - B) U (B - A)

静态链表说明 使用数组来实现链式存储结构,目的是方便在不设指针类型的高级程序设计语言中使用链式结构 c语言定义数据结构 #define MAX_SIZE 1000 // 所有的类型都统一定义为ElemType typedef int ElemType; typedef struct { ElemType data; int cur; } component, LinkList[MAX_SIZE]; 存储结构如下图所示 静态链表的工作原理 静态链表重点是在构建两个链表:备用链表(空闲的节点)和数据

【大白话系统】MySQL 学习总结 之 缓冲池(Buffer Pool) 的设计原理和管理机制

一.缓冲池(Buffer Pool)的地位 在<MySQL 学习总结 之 InnoDB 存储引擎的架构设计>中,我们就讲到,缓冲池是 InnoDB 存储引擎中最重要的组件.因为为了提高 MySQL 的并发性能,使用到的数据都会缓存在缓冲池中,然后所有的增删改查操作都将在缓冲池中执行. 通过这种方式,保证每个更新请求,尽量就是只更新内存,然后往磁盘顺序写日志文件. 更新内存的性能是极高的,然后顺序写磁盘上的日志文件的性能也是比较高的,因为顺序写磁盘文件,他的性能要远高于随机读写磁盘文件. 正因为

Java集合类库 LinkedList 源码解析

基于JDK 1.7,和ArrayList进行比较分析 Java已经有了ArrayList,用来存放元素,对元素的操作都很方便.为什么还会有LinkedList呢?我们都知道ArrayList获取元素很快,但是插入一个元素很慢,因为ArrayList底层维护的是一个数组,往数组中的某个位置插入一个元素,是很消耗资源的. 而LinkedList插入元素很快,获取任意位置的元素却很慢.这是为什么呢?底层又是怎样实现的呢? 1.继承关系 LinkedList的继承关系图: LinkedList继承的是A