顺序表及其多种实现方式 --- C/C++】的更多相关文章

所谓顺序表,即线性表的顺序存储结构.下面给出的是数据结构---线性表的定义. ADT List{ 数据对象: 线性表的数据对象的集合为{a1,a2,a3,...,an},每个元素的类型为ElemType. 数据关系: 除第一个元素a1外,每一个元素有且只有一个直接前驱元素,除了最后一个元素an外,每个元素有且仅有一个直接后继元素. 数据元素之间的关系是一对一的关系. 基础操作: InitList(&L);  //构造一个空的线性表 DestroyList(&L); //销毁线性表 Clea…
一.基本概念: 线性表:由n个类型相同的数据元素组成的有限序列,记为(a1,a2,--an). 线性表的特征:其中的元素存在这序偶关系,元素之间存在着严格的次序关系. 顺序存储表:线性表中的元素依次存放在一组地址连续的存储单元(数组)中. 存储特点:若已知首元素的起始地址a0和每个元素占用的空间m,则计算第i个元素的存储位置:ai = a0 + (i - 1)m. 顺序表的特征:(1)在逻辑上相邻的元素,在物理上也是相邻 (2)知道表中起始元素的地址,线性表中的任一个元素地址都可以确定,因此很容…
线性表有2种,分为顺序表和链表. 顺序表: 采用顺序存储方式,在一组地址连续的存储空间上存储数据元素的线性表(长度固定) 链表: 有3种,单链表.双向链表.循环链表(长度不固定) seqList.h #ifndef SEQLIST_H #define SEQLIST_H #include <stdio.h> #include <malloc.h> typedef enum { OK=, //正确 ERROR=, //出错 TRUE=, //为真 FALSE= //为假 }statu…
 顺序表和链表是线性表的两种基本实现形式(链表还有多种变化形式),对于这两种实现方式,没有一种方法可以称是最好的,他们各自有着各自的特点和优缺点,适用于不同的应用场景.  与顺序表相比,链表较为灵活,它既不要求在预先分配的一块连续的存储空间中存储线性表的所有数据元素,也不要求按其逻辑顺序来分配存储单元,可根据需要进行存储空间的动态分配.因此,当线性表的长度变化较大或长度难以估计时,宜用链表.但在线性表的长度基本可以预计且变化较小的情况下,宜用顺序表,因为链表的存储密度较顺序表的低,且顺序表具有随…
逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为线性表的顺序存储结构. 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中,之间不存在空隙,这样的存储结构称为顺序存储结构. 使用顺序存储结构存储的数据,第一个元素所在的地址就是这块存储空间的首地址.通过首地址,可以轻松访问到存储的所有的数据,只要首地址不丢,数据永远都能找着(一根绳上的蚂蚱,要有就都有). 使用线性表的顺序存储结构生成的表,称为顺序表.            …
对顺序表的操作,添加与删除元素. 增加元素 如下图所示  对顺序列表 Li [1328,693,2529,254]  添加一个元素 111 ,有三种方式: a)尾部端插入元素,时间复杂度O(1);    保证了原始顺序列表的顺序. b)非保序的加入元素(不常见),时间复杂度O(1);   打乱了原始顺序列表的顺序. c)保需的元素插入,时间复杂度O(n);    保证了原始顺序列表的顺序. 删除元素 如下图所示  对顺序列表 Li [1328,693,2529,254]  删除元素 ,有三种方式…
顺序表(顺序存储结构)及初始化过程详解 顺序表,全名顺序存储结构,是线性表的一种.通过<线性表>一节的学习我们知道,线性表用于存储逻辑关系为"一对一"的数据,顺序表自然也不例外. 不仅如此,顺序表对数据的物理存储结构也有要求. 顺序表存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时做到数据元素之间不留一丝缝隙. 例如,使用顺序表存储集合{1,2,3,4,5}数据最终的存储状态如下图所示: 由此我们可以得出,将"具有 '一对一' 逻辑关…
顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __init__(self, max=8): self.max = max #创建默认为8 self.num = 0 self.date = [None] * self.max #list()会默认创建八个元素大小的列表,num=0,并有链接关系 #用list实现list有些荒谬,全当练习 #self.las…
顺序表类定义: template<class T> class SeqList : { public: SeqList(int mSize); ~SeqList() { delete[] elements; } bool SM_Delete(T x); private: int maxLength; T *elements; }; template <class T> SeqList<T>::SeqList(int mSize) { maxLength = mSize;…
线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: (1)除第一个位置的数据元素外,其它数据元素位置的前面都只有一个数据元素: (2)除最后一个位置的数据元素外,其它数据元素位置的后面都只有一个元素.也就是说,数据元素是一个接一个的排列.因此,可以把线性表想象为一种数据元素序列的数据结构. 线性表的接口如下所示. public interface I…