数据结构这个词几乎和Java一直在执行开发人员的工作,我们很多人对数据结构知之甚少,但不太了解。他们认为没有必要找出答案。但是,无论是出于工作还是个人求知,我们都应该了解到底数据结构是什么??
俗话说,遇事不决问杜娘,想要回答什么是数据结构?让我们来看看百度百科全书对数据结构的定义:数据结构(data structure)它是具有结构特征的数据元素的集合。它研究了数据的逻辑结构、数据的物理结构以及它们之间的相互关系,并设计了相应的算法,以确保这些操作后获得的新结构仍然保持原来的结构类型。简而言之,数据结构是一种或多种特定关系的数据元素的集合,即带“结构”收集数据元素。“结构”它是指数据元素之间的关系,分为逻辑结构和存储结构。
维基百科的定义是:基于抽象数据类型的数据结构(ADT),数据类型的数学模型是从数据用户的角度定义的,特别是在可能的值、可能的数据操作和行为方面。
ADT不在乎其值的内存表示形式或如何实现其操作。这就像一个Java接口,它是一种与任何实现断开连接的数据类型。相反,数据结构是一个或多个ADT的具体实现,类似于Java类如何实现接口。
容器是数据结构伴生的一个词,从容器存储和检索数据项的任何内容都可以被视为数据结构。包括Employee,Vehicle,Array和List ADT数据结构的衍生。
许多数据结构旨在描述各种实体。例如,Employee类的例子是用来描述各种员工的数据结构的存在。相反,一些数据结构存在于其他数据结构的通用存储容器中。例如,数组可以存储原始值或参考对象。我称后一种数据结构为容器。除了聚合,我们看到的所有数据结构都是容器。
在大学中利用设计模式向大学生介绍数据结构已经相当普遍了,我们应该在大学开设的数据结构课上有所接触。布朗大学的一篇论文调查了几篇高质量设计的论文量有用的数据结构设计模式。其中典型的Adapter模式对设计堆栈和队列非常有用。让我们来看看下面的代码实例。
在堆栈和队列中使用适配器模式(DequeStack.java)
public class DequeStack implements Stack
{
Deque D; // holds the elements of the stack
public DequeStack()
{
D = new MyDeque();
}
@Override
public int size()
{
return D.size();
}
@Override
public boolean isEmpty()
{
return D.isEmpty();
}
@Override
public void push(Object obj)
{
D.insertLast(obj);
}
@Override
public Object top() throws StackEmptyException
{
try
{
return D.lastElement();
}
catch(DequeEmptyException err)
{
throw new StackEmptyException();
}
}
@Override
public Object pop() throws StackEmptyException
{
try
{
return D.removeLast();
}
catch(DequeEmptyException err)
{
throw new StackEmptyException();