【数据结构】:实现顺序表各种基本运算的算法

这篇具有很好参考价值的文章主要介绍了【数据结构】:实现顺序表各种基本运算的算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


目的

领会顺序表存储结构和掌握顺序表中各种基本运算算法设计。


内容

编写一个程序sqlist.cpp,实现顺序表的各种基本运算和整体建表算法(假设顺序表的元素类型ElemType为char),并在此基础上设计一个主程序,完成如下功能:
初始化顺序表L
依次插入a,b,c,d,e元素
输出顺序表L
输出顺序表L长度
判断顺序表是否为空
输出顺序表L的第3个元素
输出元素a的位置
在第4个元素位置上插入f元素
输出顺序表L
删除顺序表L的第3个元素
输出顺序表L
释放顺序表L

二、详细代码

代码如下:

#include<stdio.h>
#include<malloc.h>
#define MaxSize 50
typedef char ElemType;
typedef struct SqList {
	ElemType data[MaxSize];
	int length;
}SqList;

void InitList(SqList*& L) {//初始化线性表
	L = (SqList*)malloc(sizeof(SqList));
	L->length = 0;
}
void DestroyList(SqList*& L) {//销毁线性表
	free(L);
}
bool ListEmpty(SqList* L) {//判断线性表是否为空表
	return (L->length == 0);//通过L->length判断,length为0的时候,即是空表
}
int ListLength(SqList* L) {//求线性表的长度
	return (L->length);//直接返回length即可
}
bool GetElem(SqList* L, int i, ElemType e) {//求线性表中第i个元素值
	i--;
	if (i<0 || i>L->length - 1) {//判断数据合法性
		return false;//
	}
	else {//若合法,则输出
		e = L->data[i];
		return true;
	}
}
void DispList(SqList* L) {//输出线性表
	for (int i = 0; i < L->length; i++) {//利用循环遍历数组,逐一输出数组元素
		printf("%c", L->data[i]);

	}
	printf("\n");
}
int LocateElem(SqList* L, ElemType e) {//查找第一个值域为e的元素序号
	for (int i = 0; i < L->length; i++) {
		if (e == L->data[i]) {
			return i+1;
		}
	}
	return 0;
}
bool InsertElem(SqList*& L, int i, ElemType e) {//插入第i个元素
	int j;
	if (i<1 || i>L->length + 1 || L->length == MaxSize) {//对插入位置进行判断,插入位置要在表中,且表的长度与MaxSize不可相等,不然插入后数据会溢出
		return false;
	}
	i--;//将i从元素位置转换成数组下标
	for (j = L->length; j > i;j--) {//将插入元素后面的元素往后移动一个位置
		L->data[j] = L->data[j - 1];
	}
	L->data[i] = e;
	L->length++;
	return true;
}
bool ListDelete(SqList*& L, int i, ElemType e) {//删除第i个元素
	int j;
	if (i<1 || i>L->length) {
		return false;
	}
	i--;
	e = L->data[i];
	for (j = i; j < L->length - 1; j++) {
		L->data[j] = L->data[j + 1];

	}
	L->length--;
	return true;
}
//到此为止,我们已经将可能用到的函数定义完毕
//下面基本只需调用以上函数即可
int main() {
	SqList* L;
	ElemType e = 0;
	printf("顺序表的基本运算如下");
	printf("(1)初始化顺序表L\n");
	InitList(L);
	printf("(2)依次插入a,b,c,d,e元素\n");
	InsertElem(L, 1, 'a');
	InsertElem(L, 2, 'b');
	InsertElem(L, 3, 'c');
	InsertElem(L, 4, 'd');
	InsertElem(L, 5, 'e');
	printf("(3)输出顺序表L:\n");
	DispList(L);
	printf("(4)顺序表L长度:%d\n",ListLength(L));
	printf("(5)顺序表L为%s\n", ListEmpty(L));
	GetElem(L, 3, e);
	printf("(6)顺序表L的第3个元素:%c\n",e);
	printf("(7)元素a的位置:%d\n",LocateElem(L,'a'));
	printf("(8)在第四给元素位置上插入f元素\n");
	InsertElem(L, 4, 'f');
	printf("(9)输出顺序表L:\n");
	DispList(L);
	printf("(10)删除L的第3个元素\n");
	ListDelete(L, 3, e);
	
	printf("(11)输出顺序表L:\n");
	DispList(L);

	printf("(12)释放顺序表L\n");
	DestroyList(L);
	return 1;



}

运行结果

如下
1.编写一个程序x1j学号后三位.c,实现顺序表的各种基本运算和整体建表算法(假设顺,数据结构,算法,数据结构文章来源地址https://www.toymoban.com/news/detail-723853.html

到了这里,关于【数据结构】:实现顺序表各种基本运算的算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】顺序表的实现及基本操作完整代码(C语言实现)

    顺序表:逻辑上相邻的数据元素,其物理次序也是相邻的 这里之所以要把int分别创建新名字为SqlElemType和Status,是因为实际应用时数据的类型不一定是int型,这样设置方便修改元素类型,提高代码适用性。 LocateElem的时间复杂度为O(n) InsertSq的时间复杂度为O(n) DeleteSq的时间

    2024年04月12日
    浏览(39)
  • 数据结构(C语言实现)——顺序表的介绍及基本操作的实现

    今天我们来学习数据结构中的线性表,本文主要介绍一种常见的线性表——顺序表。 本文着重介绍顺序表的概念以及顺序表各种基本操作的实现过程(C语言实现),以后会更新更多的数据结构,觉得有用的朋友可以三连关注一波,一起学习。 线性表(linear list)是n个具有相

    2023年04月13日
    浏览(41)
  • 数据结构-顺序表的基本实现(C语言,简单易懂,含全部代码)

    今天起开始编写数据结构中的各种数据结构及算法的实现,说到顺序表,我们首先得了解下线性表。 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻

    2023年04月08日
    浏览(30)
  • 数据结构-线性表的顺序表基本操作代码实现(超级详细清晰 C++实现)

    顺序表是用一段 物理地址连续的存储单元 依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。 顺序表: 可动态增长的数组,要求数据是连续存储的 特点: 随机访问 顺序既可以 静态分配 ,也可以 动态分配 。在静态分配时,由于数组

    2024年02月07日
    浏览(40)
  • 数据结构基础篇》》用c语言实现复数的八个基本运算

    数据结构开讲啦!!!🎈🎈🎈 本专栏包括: 抽象数据类型 线性表及其应用 栈和队列及其应用 串及其应用 数组和广义表 树、图及其应用 存储管理、查找和排序 将从简单的抽象数据类型出发,深入浅出地讲解复数,海龟作图 到第二讲线性表及其应用中会讲解,运动会分数

    2024年02月07日
    浏览(36)
  • 数据结构(C语言实现)——栈和队列的介绍及基本操作的实现(动态顺序栈+链队)

    今天我们来学习另外两个线性结构——栈和队列,栈和队列是操作受限的线性表,因此,可称为限定性的数据结构。 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守

    2023年04月19日
    浏览(33)
  • 【数据结构】顺序表的定义和运算

    目录 1.初始化 2.插入 3.删除 4.查找 5.修改 6.长度 7.遍历 8.完整代码 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Filotimo__✍️原创,首发于CSDN📚。 📣如需转载,请事先与我联系以获得授权⚠️。 🎁欢迎大家给我点赞👍、收藏⭐️

    2024年02月05日
    浏览(27)
  • 【数据结构】(顺序表)C语言实现线性表顺序存储的创建、插入、删除、查找、输出等基本操作(附完整代码)

    要求:利用书本上的线性表的顺序存储结构定义 #define MAXSIZE 100 //顺序表可能达到的最大长度 typedef struct{ ElemType *elem; // 存储空间基址 int length; // 当前长度 int listsize; // 当前分配的存储容量(以sizeof(ElemType)为单位) } SqList; 1)编写完成下列功能的函数: (1)初始化一个线性表

    2024年04月28日
    浏览(29)
  • 数据结构:使用顺序栈的基本操作,实现十进制转为二进制,十六进制的转换

    使用系统环境: 1:win10,使用工具dev 2:使用系统win10 3:参考书籍数据结构(C语言版——严蔚敏 吴伟民) ( 注意:此文章默认,学习者拥有一定的数据机构栈,C语言的知识,书籍第20页,2.1算法的代码进行一个简化。)

    2024年02月05日
    浏览(48)
  • 数据结构:图文详解顺序表的各种操作(新增元素,查找元素,删除元素,给指定位置元素赋值)

      目录 一.顺序表的概念 二.顺序表的实现 新增元素 默认尾部新增 指定位置添加元素 查找元素 查找是否存在 查找元素对应的位置 查找指定位置对应的元素 删除元素 获取顺序表长度 清空顺序表 在线性数据结构中,我们一般分为俩类:顺序表和链表         顺序表是一

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包