首页 > 其他分享 >数据结构——顺序线性表(向量)

数据结构——顺序线性表(向量)

时间:2024-01-05 13:31:45浏览次数:28  
标签:顺序 线性表 元素 length SqList date 数据结构 向量

参考文章:

数据结构(顺序表——线性表)_创建顺序线性表sl,调用initlist()函数对sl初始化-CSDN博客

以下是作为个人笔记,自己学习用。


线性表是具有相同特性的数据元素的一个有限序列,在线性表中每个数据元素由逻辑序号唯一确定

线性表的特性:

1.有穷性:表中元素个数是有限的

2.一致性:表中所有元素的性质相同,具有相同的数据类型

3.序列性:各元素在线性表中的位置只取决于它们的序号,一个表中可以有两个相同的元素。

ADT List
{
	数据对象:
		D={ai|1<=i<=n,n>=0,ai为ElemType类型}//ElemType是自定义类型标识符
  数据关系:
    R={<ai,ai+1>|ai,ai+1含于Di=1,2,……n-1}
}

运算:

    InitList(&L):初始化线性表,构造一个空的线性表L
    DestroyList(&L):销毁线性表,释放线性表L所占用的内存空间
    
    ListEmpty(L):判断线性表是否为空,为空则返回真
    
    Listlength(L):求线性表的长度,返回L中元素的个数
    
    DispList(L):输出线性表,L不为空时,顺序显示L中各结点的值域
    GetElem(L,i,&e):求线性表中某个元素的值,用e来返回第i个值
    
    LocateElem(L,e):按元素值查找,返回第1个值域与e相等的元素的序号,若不存在则返回0
    ListInsert(&L,i,e):插入数据元素,在L中第i个位置插入一个新的元素e,L的长度加1
    ListDelete(&L,i,e):删除数据元素,删除L中第i个元素,并用e返回其值,L的长度减1

线性表的顺序存储结构

线性表的顺序存储结构——顺序表

线性表的顺序存储结构是把线性表中的所有元素按照其逻辑顺序依次存储到计算机存储器中指定存储位置的一块连续的存储空间中。

在C/C++中借助数组类型来实现顺序表,用数组存放线性表的元素及其逻辑关系。 顺序表采用数组来实现,但不能将任何一个数组都当作是一个线性表,二者的运算是不同的。

顺序表基本运算的实现

线性表元素的逻辑序号从1开始,而数组从0开始,要注意区分。

顺序表指针L和顺序表Q都可以都可以提供一个顺序表,前者的定义方式是SqList*L后者的定义方式是

SqList Q。前者引用length域的方式为L->length,后者引用length域的方式为Q.length

之所以采用顺序表指针是为了方便顺序表的释放算法设计,并且在函数之间传递顺序表指针时会节省为形参分配的空间。

1.建立顺序表

#define maxsize 100
typedef int Elempyte;
typedef struct
{
	Elempyte date[100];
	int length;
}SqList;
 
void CraetList(SqList*& L, Elempyte a[], int n)
{
	int i=0, k=0;
	L = (SqList*)malloc(sizeof(SqList));
	while (i < n)
	{
		L->date[k] = a[i];
		k++; i++;
	}
	L->length = k;
}

形参L前加上引用符“&”的原因是建立好顺序表需要返回值给形参。

2.顺序表的应用示例

例1:假设一个线性表采用顺序表示,设计一个算法,删除其中所有值等于X的元素,要求时间复杂度O(n),空间复杂度O(1)。

void deletex(SqList*& L, Elempyte x)
{
	int i, k=0;
	for (i = 0; i < L->length; i++)
	{
		if (L->date[i] != x)
		{
			L->date[k] = L->date[i];
			k++;
		}
	}
	L->length = k;
}
void deletex(SqList*& L, Elempyte x)
{
	int i=0, k=0;
	while (i < L->length)
	{
		if (L->date[i] == x)
			k++;
		else
			L->date[i - k] = L->date[i];
		i++;
	}
	L->length -= k;
}
















标签:顺序,线性表,元素,length,SqList,date,数据结构,向量
From: https://blog.51cto.com/u_16373090/9113667

相关文章

  • 数据结构【线性表之单链表】
    链表链表:线性表还可以使用链式存储方式保存,即线性表中的各个元素保存在各自的存储空间中,形成一个个节点。这些结点在内存的地址不要求是相邻的,它们之间通过指针连接起来。特点:灵活存储,不要求预先分配一块连续的空间,而是按需分配,随时需要,随时分配不要求分配的空间必须是相邻的没有......
  • 支持向量机(SVM)是做什么的?
    支持向量机(SupportVectorMachine,SVM)是一种用于分类问题的监督算法。主要用于二分类和多分类问题。其基本思想是找到一个超平面,能够将不同类别的样本点尽可能地分开,并使得离超平面最近的样本点尽可能远离超平面,从而实现较好的分类效果。SVM的关键是找到一个最优的超平面,这个超平面......
  • 数据结构线性表之顺序表
    定义:一个线性表是由同类型数据元素构成的有限序列一般地,当表示一个由n(n>=0)个元素组成的线性表L时,将线性表中的所有元素列在一对括号中,每个元素之间以逗号分隔,如L=(a0,a1,....,an-1)不搞的像数据那么麻烦了,按我理解的来表项:线性表中的数据元素表头元素:线性表的第一个元素表尾元素:......
  • Redis 底层数据结构
    在Redis数据结构和对象机制中提到的图中,我们知道,可以通过redisObject对象的type和encoding属性。可以决定Redis主要的底层数据结构:SDS、QuickList、ZipList、HashTable、IntSet、ZskipList。一、简单动态字符串(SDS)先来看看传统的C语言如何存储字符串的:比如一个"Redis"......
  • 数据结构简介之算法
    时间复杂度算法的时间复杂度_算法时间复杂度-CSDN博客时间复杂度可以参考这篇文章超级详细!!!为什么不使用算法的绝对运行时间来衡量算法的时间效率?同一个算法处理不同数量的数据时,所花的绝对运行时间可能不同。同一个算法处理相同数量的数据时,在不同配置的电脑上的绝对运行时间也可能......
  • 亚信安慧AntDB数据库:引领向量数据库标准化,助力大数据技术创新
    近日,中国通信标准化协会大数据技术标准推进委员会携手中国信通院,以在线形式召开了《向量数据库技术要求》研讨会,这一举措旨在推动向量数据库技术的标准化发展。此次研讨会吸引了来自50多家企业的70多位专家参与,共同探讨并达成对标准框架的共识。其中,AntDB数据库的专家也受邀参与,为......
  • 数据结构简介
    什么是数据?数据是指所有能输入计算机并被计算机程序处理的符号的集合。源程序、文档、地图、照片其实都是数据。数据结构数据结构分为逻辑结构和物理结构。逻辑结构:主要是数据元素之间的逻辑关系,物理结构指的是数据结构在计算机种的表示及存储方式。逻辑结构包含集合、线性结构、树......
  • 做题记录:数据结构 I
    标*的题目是个人认为质量较高或比较符合个人喜好的题目。*I.P5278算术天才⑨与等差数列尝试寻找一个序列满足为等差数列的充分必要条件。显然需要有\(\max-\min=(r-l)k\)。直接要求等差的话,信息不好合并。但等差的限制有一个必要条件是,差分序列的\(\gcd\)为\(k......
  • 【scikit-learn基础】--『监督学习』之 支持向量机回归
    在机器学习中,支持向量机(SupportVectorMachine)算法既可以用于回归问题,也可以用于分类问题。支持向量机(SVM)算法的历史可以追溯到1963年,当时前苏联统计学家弗拉基米尔·瓦普尼克(VladimirN.Vapnik)和他的同事阿列克谢·切尔沃宁基斯(AlexeyYa.Chervonenkis)提出了支持向量机的概念......
  • 【数据结构】详细剖析线性表
    顺序表与链表的比较导言大家好,很高兴又和大家见面啦!!!经过这段时间的学习与分享,想必大家跟我一样都已经对线性表的相关内容比较熟悉了。为了更好的巩固线性表相关的知识点,下面我们一起将线性表这个章节的内容梳理一遍吧。一、线性表线性表的相关概念线性表时具有相同数据类型的个数据......