• 存储在集合中的对象不应该含有基本数据结构的任何实现细节


      

      开卷有益,最近正按计划巩固自己算法与数据结构的基础知识,目前看来收获开始很多的,重拾了很多遗忘的知识,注意到很多以前没有留意的细节。在复习使用链表实现栈是,注意到了一句话:“链表结构的细节内容应该与链表所存储的元素区分开来”。

      我试着去理解这句话中包含的东西,以前我使用的链表大概是这样的:

       DATA是我们要存储的数据,如果我们想要用DATA实现链表结构,我们需要在DATA中添加一个存储DATA对象地址的变量next。之前我并没有意识到也没有去思考过这种使用方式会有什么缺陷,今天思考了一下,确实发现了这种使用方式的一些缺陷:

      1、为了使用链表存储DATA对象,DATA被迫存储了与自己无关的next变量。

      2、DATA必须明确的知道,自己会成为DATA对象链表中的一个元素。

      3、链表存储的数据和链表的结构耦合度过高,违背了集合实现细节与集合使用相分离的目标。

      解决以上问题的方案是,定义一个独立的节点类,节点类中仅包含两个成员属性,一个为指向下一节点的next,一个为指向本节点存储数据的data。next和data可以是指针,也可以是引用。

      在java中,在可以设置data的类型为Object,因为Object是所有类的父类,利用向上转型,data可以指向任何类的对象,即我们定义的链表能够存储所有类型的数据。

       

  • 相关阅读:
    阿里云ecs服务器wamp内网可以访问,外网ip、域名无法访问
    python- 粘包 struct,socketserver
    python-网络编程
    python-模块-包
    python- 异常
    python-模块 time, os, sys
    python_模块 collections,random
    python_模块 hashlib ,configparser, logging
    python_ 模块 json pickle shelve
    python-面向对象中的特殊方法 ,反射,与单例模式
  • 原文地址:https://www.cnblogs.com/XiaoZhengYu/p/11611597.html
Copyright © 2020-2023  润新知