`
zerozone
  • 浏览: 202919 次
  • 来自: 北京
社区版块
存档分类
最新评论

线性表的顺序存储的特性

    博客分类:
  • Java
阅读更多

线性表的顺序存储的特性

1)随机访问,由于逻辑上相邻的元素在物理存储上也相邻。因此每个元素的存储地址是可知的。

2)插入和删除操作在概率上要移动50%的元素。


在Java编程中我们经常使用Vector。到底Vector是一种什么样的数据结构呢?看了源代码才发现,原来Vector就是一种顺序动态存储的线性表结构。C++中的Vector估计也是如此。

为什么叫做vector 呢?

vector
[5vektE]
n. [数]向量, 矢量,

矢量在数学上的定义是有大小和方向的物理量。

vector源于拉丁文,有搬运的意思。唉,用来描述顺序存储结构的线性表真是贴切啊。

Java 的Vector还有许多其它特性(比如线程安全、异常处理和支持范型编程等等)。这些特性是实际应用中必须考虑的因素。因此本文介绍的顺序动态结构存储的 线性表仅仅是个模型,距离真正应用还差的远。由此看来,目前各种语言都在丰富和支持内建工具库(Utilities)绝对有必要。对于学习C++和 Java,深入到这些基础工具类内部探究其工作原理对熟练掌握使用语言本身有很大益处。

关于数据结构的书本上一般只介绍一些常用方 法,实际上Java中Vector的操作方法有很多。例如add/addElement方法就比较实用。毕竟大家使用习惯上,往表尾插数据的时候较多,尤 其是在Vetor的构造时期。实际上add/addElement方法是insert的一种较多见的应用场景。

下面介绍以C++表示的顺序动态存储结构的线性表。

//SqList.h

//引入范型编程的好处由下一行import代码也应该看出

//#include <ElemType.h>

//
class SqList{
public:
    SqList();

    SqList(int capacity,int increment);

   ~SqList();

public:

    bool init(int capacity,int increment);

    int getSize();

    ElemType getAt(int i);

    bool insert(int i,ElemType& e);

    bool delete(int i);

    void clear();

    //others methods

protected:

    ElemType* data; //ElemType类型的指针,表示一组存储地址的首地址

    int size; //表示已容纳的元素个数

    int capacity; //当前的可容纳的元素个数
};



//SqList.cpp

#include <sqlist.h>

SqList::SqList(){

    init(10);//默认存放10个元素

}

SqList::SqList(int capacity,int increment){

    init(capacity,increment);

}

SqList::init(int capacity,int increment){

    //validate capacity and increment

    this.data = (ElemType*)new ElemType[capacity];

    this.increment = increment;

}

bool SqList::insert(int i, ElemType e){
    if(i<1 || i> size+1) return false;
    if(size==capacity){

         if(increment>0) {//说明设置了每次增长的长度

              data = (ElemType*) new ElemType[capacity+increment];
        }

        else{

            data = (ElemType*) new ElemType[capacity*2];

        }

        //copy old elements to new buffer

        memcpy(data,...);

    }

    data[size++]=e;

}

分享到:
评论

相关推荐

    数据结构线性表实验报告.doc

    实验原理: 线性表顺序存储结构下的基本算法; 线性表链式存储结构下的基本算法; 实验内容: 2-21设计单循环链表,要求: (1) 单循环链表抽象数据类型包括初始化操作、求数据元素个数操作、插入操作、删除操作 ...

    2.1 线性表1

    1. 线性表的定义 2. 线性表的逻辑特性 3. 线性表的存储结构 4. 顺序表和链表的比较 1. 线性表的定义 2. 线性表的逻辑特性 3. 线性表的存储结构

    实验2第二个程序.zip_线性表的顺序存储实现——归并

    归并两个“其数据元素按值非递减有序排列”的有序表 LA 和 LB,求得有序表 LC 也具有同样特性。

    数据结构与算法 第2章线性表 哈工大课程

    掌握线性表的逻辑结构,线性表的顺序存储结构和链式存储 结构的描述方法;熟练掌握线性表在顺序存储结构和链式存 储结构的结构特点以及相关的查找、插入、删除等基本操作 的实现;并能够从时间和空间复杂性的角度...

    学生信息管理系统的顺序表实现

    本实验要求同学们根据自己所在班级成员管理的线性表特性,应用所学的线性表知识设计一个基本的班级管理系统。该系统至少包含新成员入社、老成员退社、成员查询,以及两个班级合并等功能。 案例用c语言实现,在VS的...

    线性表操作 栈和队列的应用 多维数组和串

    顺序存储的线性表和运算 链式存储的线性表和运算 顺序栈的实现和运算 链栈的实现和运算 顺序队列的实现和运算 链式队列的实现和运算 循环队列的实现和运算

    数据结构工程----线性表的实现

    1.顺序存储 顺序表,使用数组实现,一组地址连续的存储单元,数组大小有两种方式指定,一是静态分配,二是动态扩展。 注:线性表从1开始,而数组从0开始。 优点:随机访问特性,查找O(1)时间,存储密度高;逻辑...

    王道第二章 -线性表的操作

    线性表的顺序存储又称顺序表,是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻,即:数据逻辑顺序以及物理顺序相同 内存地址:L起始位置LOC(A),设每个...

    第2章 线性表.ppt

    了解线性表的逻辑结构特性是数据元素之间存在着线性关系,在计算机中表示这种关系的两类不同的存储结构是顺序存储结构和链式存储结构。用前者表示的线性表简称为顺序表,用后者表示的线性表简称为链表

    数据结构顺序表的实现方式.docx

    线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结 构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续的一条直线。...

    数据结构实验(6).doc

    掌握线性表的顺序存储结构即顺序表中的各种基本操作。 " "5. 掌握链式表的存储结构——单链表中的各种基本操作。 " " " "实验预习(含实验原理及设计过程等) " "实验原理:线性表的链式结构及各种基本操作。 " ...

    线性表实验报告.doc

    掌握线性表的顺序存储结构的定义及其C语言实现。 掌握线性表的链式存储结构——单链表的定义及其C语言实现。 掌握线性表在顺序存储结构即顺序表中的各种基本操作。 掌握线性表在链式存储结构——单链表中的各种基本...

    有序线性表中插入元素

    设顺序表L是递增有序表,编写一个算法将x插入L中,使L仍然有序。如果是链表表示,是否可以实现以上操作,如果可能,编写一个算法予以实现。

    顺序表操作

    顺序表基本操作1.掌握线性表的顺序存储结构和操作特性。 2.实现基于顺序表的基本操作。

    数据结构习题答案(全部算法)严蔚敏版

    2.6.1 实现线性表顺序存储结构及运算的C语言源程序 2.6.2 单链表处理的C语言源程序 习题二 第3章 栈和队列 3.1 栈 3.1.1 栈的定义及其运算 3.1.2 栈的顺序存储结构(向量) 3.1.3 栈的链表存储结构 3.1.4 栈...

    C语言 单链表的实现

    (2)了解顺序表的逻辑结构特性,熟练学握顺序表存储结构的 C 语言描述方法。 (3)熟练学握顺序表的基本运算:查找、插入、删除等,学握顺序表的随机存取特性。 (4)了解线性表的链式存储结构,熟练学握线性表的链式存储...

    数据结构课程设计

    把所有员工按照顺序存储结构建立一个线性表,建立离职和入职函数,当有员工离职或入职时,修改线性表,并且打印最新的员工名单。 约瑟夫(Josephus)环问题:编号为1,2,3,…,n的n个人按顺时针方向围坐一圈,每人持有...

    计算机数据结构考研-线性表-- 总结-者:刘尧涛

    本资源适合专科本科研究生初学者和一般教学之用--刘尧涛...用一组地址连续的存储单元依次存放线性表中的元素,称顺序表。 LOC(ai+1)=LOC(ai)+l 一般来说,线性表的第i个数据元素ai的存储位置为:LOC(ai)=LOC(a1)+(i-1)*l

    数据结构实验

    1.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。 2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。 3.掌握对多函数程序的输入、编辑、...

    算法与数据结构复习题型

    线性表采用顺序存储,必须占用一片连续的存储单元。 B. 线性表采用顺序存储,便于进行插入和删除操作。 C. 线性表采用链接存储, 不必占用一片连续的存储单元 D. 线性表采用链接存储,便于进行插入和删除操作。 3. ...

Global site tag (gtag.js) - Google Analytics