顺序表学习

Posted ybossy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序表学习相关的知识,希望对你有一定的参考价值。

顺序表学习

顺序表原理

顺序表是一种简单的线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可以快速定位第几个元素,中间不允许有空值,插入、插入时需要移动大量的元素。

顺序表的三个要素

1.elems记录存储位置的基地址
2.分配一段连续的存储空间size
3.用length记录实际的元素长度,即顺序表的长度,与size不一定相等,因为空间预留着,不一定存储着数据。
定义如下:

template <Typename ElemType>
struct _Sqlist{
        ElemType* elems;
	int length;
	int size;
};

顺序表的算法实现

假定ElemType 为int类型

顺序表的初始化

bool initList(SqList& L) {
	L.elems = new int[MAX_SIZE];		//为顺序表分配MAX_SIZE个int元素的空间 
	if (!L.elems) return false;			//分配空间失败 返回false
	L.length = 0;
	L.size = MAX_SIZE;
	return true;
}

顺序表增加元素(加在表的最后面)

bool listAppend(SqList& L, int e) {
	if (L.size == L.length) {  
		return false;		//存储空间已满,返回false
	}
	L.elems[L.length++] = e;
	return true;
}

顺序表插入元素(加在表中)

bool listInsert(SqList& L,int index,int e){	//在已有的元素中间插入一个元素,index表示下标,即第index+1个元素
	if (index < 0 || index >= L.length) {
		return false;	//index 的值不合法,返回false
	}
	if (L.length == L.size) {
		return false;	//存储空间满了,返回false
	}
	for (int j = L.length - 1;j >= index;j--) {
		L.elems[j + 1] = L.elems[j];		
	}
	L.elems[index] = e;
	L.length += 1;
	return true;
}

顺序表删除元素

bool listDelete(SqList& L, int index) {
	if (index<0 || index>L.length - 1) {
		return false;	//检查index的合法性
	}
	for (int j = index + 1;j <= L.length - 1;j++) {
		L.elems[j - 1] = L.elems[j];
	}
	L.length -= 1;
	return true;
}

销毁整个顺序表

void listDestroy(SqList& L) {
	if (L.elems) {
		delete[]L.elems;//删除动态内存
	}
	L.size = 0;
	L.length = 0;
}

就这样

以上是关于顺序表学习的主要内容,如果未能解决你的问题,请参考以下文章

数据结构学习笔记——顺序表的基本操作(超详细最终版+++)建议反复看看ヾ(≧▽≦*)o

数据结构学习笔记——顺序表的基本操作(超详细最终版+++)建议反复看看ヾ(≧▽≦*)o

学习数据结构,寻找优秀代码参考学习(C++),能够实现功能即可,发邮箱413715076@qq.com

scrapy按顺序启动多个爬虫代码片段(python3)

数据结构:第二章学习小结

html 将以编程方式附加外部脚本文件的javascript代码片段,并按顺序排列。用于响应式网站,其中ma