数据结构-顺序表

数据结构-顺序表,第1张

序:又要重新开始学习数据结构了,这次我一定要赢!哈哈哈哈,考研人加油!尽量争取把数据结构的代码都敲一遍。

线性表的概念:n个具有相同特性的数据元素的有限序列。

顺序表相对于数据结构的其他知识而言比较简单,可以单纯的看做数组,可以随意存取,时间复杂度为O(1)。(突然想到主定理也忘记了,我是fw)

看王道上的代码,只有插入删除和查找,这里也简单的实现这几种方法。(完整代码在最下边)

顺序表的插入:给定插入位置、和插入元素,将数据插入到指定位置。

时间复杂度分析:

最好的情况下,在最后的位置插入元素,时间复杂度为O(1)

最坏的情况下,在表头插入元素,时间复杂度为O(n)

平均情况下,平均移动次数n/2次,故时间复杂度为O(n)

bool InsertSqList(SqList &L,int i,int e){    
	if(i<1||i>MAXSIZE){
		cout<<"error"<=i;j--){
		L.data[j] = L.data[j-1];
	}
	L.data[i-1] = e;
	L.empty++;
	return true;
}

顺序表的删除:给定删除元素的位置,删除数据

时间复杂度分析:

最好情况下:删除最后一个元素,O(1)

最坏情况下:删除第一个元素,其他元素前移一位,O(n)

平均情况下:平均移动次数(n-1)/2,时间复杂度O(n)

bool DeleteSqList(SqList &L,int i){
	if(i<1||i>MAXSIZE){
		cout<<"error\n";
		return false;
	}
	for(int j=i;j

顺序表的查找:查找给定元素在顺序表中的位置

时间复杂度分析:

最好情况:第一个就是查找的元素,O(1)

最坏情况:查到最后一个元素,或者查无此元素,时间复杂度为O(n)

平均情况下:平均比较次数(n+1)/2,试讲复杂度O(n)

bool ResearchSqList(SqList L,int e){
	for(int i=0;i

完整代码: 

//这里使用c++实现,顺序表
//这里是一个动态的顺序表

#include

#define MAXSIZE 100
using namespace std;
typedef int ElemType;

typedef struct{
	ElemType *data;
	int empty;
}SqList;

void InitSqList(SqList &L){
	L.data = new ElemType[MAXSIZE];
	L.empty = 0;
}
bool InsertSqList(SqList &L,int i,int e){
	if(i<1||i>MAXSIZE){
		cout<<"error"<=i;j--){
		L.data[j] = L.data[j-1];
	}
	L.data[i-1] = e;
	L.empty++;
	return true;
}
bool DeleteSqList(SqList &L,int i){
	if(i<1||i>MAXSIZE){
		cout<<"error\n";
		return false;
	}
	for(int j=i;j

 如有错误,敬请指正!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/801001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-07
下一篇 2022-05-07

发表评论

登录后才能评论

评论列表(0条)