栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构-顺序表(c++)含全代码

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构-顺序表(c++)含全代码

顺序表的原理及实现

文章目录
  • 前言
  • 一、顺序表是什么?
  • 二、创建顺序表
  • 三、顺序表的初始化及销毁
    • 1.顺序表的初始化
    • 2.顺序表的销毁
  • 四、顺序表的基本操作
    • 1.顺序表的添加元素
    • 2.顺序表的插入元素
    • 3.顺序表的删除元素
    • 4.打印顺序表的元素
  • 五、完整代码
  • 总结


前言

提示:以下是本篇文章正文内容,下面案例可供参考

一、顺序表是什么?
	线性表的顺序存储又称顺序表。
 它是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理地址上也相邻。
	顺序表的特点是表中元素的逻辑顺序与其物理顺序相同。
	线性表的顺序存储结构是一种随机存取的存储结构。
	顺序表的存储密度高,每个结点只存储数据元素。
二、创建顺序表

代码如下(示例):

typedef struct{
	int* elems;   //顺序表基地址
	int length;  //顺序表长度
	int size;   //顺序表总空间大小
}sqlist;//顺序表的类型名

在main函数中创建list顺序表:

sqlist list;
三、顺序表的初始化及销毁 1.顺序表的初始化

首先需要书写初始化函数 initList:
代码如下(示例):

bool initList(sqlist& L) {
	L.elems = new int[MAX_SIZE];  //为顺序表分配MAX_SIZE个int元素的空间
	if (!L.elems) return false;   //判断首地址是否存在
	L.length = 0;				//顺序表的初始长度为0
	L.size = MAX_SIZE;			//顺序表的最大存储空间
	return true;
}

然后在主函数中调用函数initList:

if (initList(list)) {
		cout << "顺序表初始化成功!" << endl;
	}
	else cout << "顺序表初始化失败!" << endl;

	listPrint(list);
2.顺序表的销毁

书写listDestroy函数
代码如下(示例):

void listDestroy(sqlist &L) {
	if (L.elems) delete[] L.elems;
	L.length = 0;
	L.size = 0;
}

主函数中调用该函数

listDestroy(list);
四、顺序表的基本操作 1.顺序表的添加元素
bool listappend(sqlist& L, int e) {
	if (L.length == L.size) return false;	//判读顺序表中元素个数是否到达最大值
	L.elems[L.length] = e;
	L.length++;								//属性表长度加一
	return true;

}
2.顺序表的插入元素
bool listInsert(sqlist& L, int index, int e) {
	if (L.length == L.size) return false;
	if (index<0 || index>=L.length) return false;   //判断输入的位置是否正确
	for (int j = L.length - 1; j >= index; j--) {
		L.elems[j + 1] = L.elems[j];
		}
	L.elems[index] = e;
	L.length++;
	return true;
}
3.顺序表的删除元素
bool listDelete(sqlist &L,int index) {
	if (index < 0 || index >= L.length) return false;  //判断输入的位置是否正确
	if (index == L.length - 1) {
		L.length--; return true;
	}
	for (int j = index; j < L.length-1; j++) {
		L.elems[j] = L.elems[j + 1];
	}
	L.length--;
	return true;
}
4.打印顺序表的元素
void listPrint(sqlist& L) {
	cout< 
五、完整代码 

vs2019(c++17)

#include
using namespace std;
#define MAX_SIZE 100


typedef struct{
	int* elems;   //顺序表基地址
	int length;  //顺序表长度
	int size;   //顺序表总空间大小
}sqlist;


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


void listPrint(sqlist& L) {
	cout<=L.length) return false;
	for (int j = L.length - 1; j >= index; j--) {
		L.elems[j + 1] = L.elems[j];
		}
	L.elems[index] = e;
	L.length++;
	return true;
}


bool listDelete(sqlist &L,int index) {
	if (index < 0 || index >= L.length) return false;
	if (index == L.length - 1) {
		L.length--; return true;
	}
	for (int j = index; j < L.length-1; j++) {
		L.elems[j] = L.elems[j + 1];
	}
	L.length--;
	return true;
}


void listDestroy(sqlist &L) {
	if (L.elems) delete[] L.elems;
	L.length = 0;
	L.size = 0;
}


int main() {
	sqlist list;
	int e,index;

	cout << "顺序表初始化..." << endl;

	//1.初始化
	if (initList(list)) {
		cout << "顺序表初始化成功!" << endl;
	}
	else cout << "顺序表初始化失败!" << endl;

	listPrint(list);

	//2.添加元素
	int count = 0;
	cout << "请输入添加元素的个数:";
	cin >> count;

	for (int i = 0; i < count; i++) {
		cout << "请输入添加的元素e的值:";
		cin >> e;
		if (listappend(list, e)) {
			cout << "添加成功!" << endl;
		}
		else {
			cout << "添加失败!" << endl;
		}
	}

	listPrint(list);

	//3.插入元素
	cout << "请输入要插入的元素位置及值" << endl;
	cin >> index >> e;

	if (listInsert(list, index, e)) {
		cout << "插入成功!" << endl;
	}
	else {
		cout << "插入失败!" << endl;
	}

	listPrint(list);

	//4.删除元素
	cout << "请输入要删除的元素的位置" << endl;
	cin >> index;

	if (listDelete(list, index)) {
		cout << "删除成功!" << endl;
	}
	else {
		cout << "删除失败!" << endl;
	}

	listPrint(list);

	//5.销毁
	listDestroy(list);

	system("pause");
	return 0;
}

总结 例如:以上就是今天要讲的内容,本文仅仅简单介绍了顺序表的创建及使用,希望大家点点关注。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/587485.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号