小白莲的数据结构day01

线性表顺序存储结构的基本操作1

各位大佬好,我是菜得抠脚的小白莲,刚入门学习数据结构。今天,小白莲学会了线性表顺序存储结构的基本操作之 构建线性表、对线性表的初始化、获取线性表。(是不是很牛逼?)咳咳,我知道大佬们心里肯定狠狠鄙夷了一番,不过雨我无瓜,嘻嘻。 欢迎各位大佬批评指正,也希望和小白莲一样菜得抠脚的小白一起互相学习。

如果觉得小白莲写得还不错,记得一定!一定!要点个赞再走哦!最好关注一下也是可以的,你们的对我的点赞和关注就是对我最大的支持,我真的很需要,谢谢!说的就是你,光收藏却不点赞,哼~~

说一下我的文章风格,我更喜欢在代码中写注释把代码解释清楚,代码外的文字会少一点

好啦,接下来随小白莲往下看看吧

1.构建线性表

//包含头文件
#include<stdio.h>
#include<stdlib.h>

//定义结构常量
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 20	//线性表初始分配的存储空间大小
#define LISTINCREMENT 10	//线性表分配存储空间的增量
typedef int Status;
typedef int ElemType;

//定义线性表的结构
typedef struct {
	ElemType* elem;	//存储空间基地址
	int length;	//线性表的当前长度
	int listsize;	//当前分配的存储容量(以 sizeof(ElemType)为单位)
}SqList;

2.对线性表的初始化

//创建一个给线性表分配存储空间的函数
//这里的(&L)是对L进行了引用,需以cpp为源文件才能支持,用指针*L也可
Status InitList(SqList& L) {
	//构建一个空表

	//用malloc函数给线性表分配内存
	//注意:malloc函数需在包含stdlib.h头文件的情况下使用
	L.elem = (ElemType*)malloc(LIST_INIT_SIZE * sizeof(ElemType));
	//判断线性表申请存储空间是否成功,若不成功则退出
	if (!L.elem) exit(OVERFLOW);
	//将线性表的长度置空
	L.length = 0;
	//初始化线性表的存储容量
	L.listsize = LIST_INIT_SIZE;
	//将执行成功的状态值返回
	return OK;
}//InitList

3.获取线性表第i个元素的操作

//创建一个获取线性表第i个元素值的函数,用e返回其值
//(1<=i<=SqList.length),注意:线性表的下标是从0开始的
Status GetElem(SqList L, int i, ElemType& e) {
	//判断i的合法性(i>L.length 包含对线性表是否为空的判断)
	if (i<1 || i>L.length) return ERROR;
	//获取元素,并将值传给e
	e = L.elem[i - 1];
	return OK;
}

4.对初始化线性表和获取元素操作的测试

//测试
int main() {

	//创建一个线性表list
	SqList list;
	//创建一个接收返回值的元素e
	ElemType e;
	//调用InitList函数给list初始化,并判断是否初始化成功
	//若初始化成功,继续下一步,否则提示初始化失败
	if (InitList(list)) {
		//给线性表定义长度
		list.length = 10;
		//对线性表赋10个测试值
		for (int i = 0; i < list.length; i++)
		{
			list.elem[i] = i+8;
		}

		//将线性表的值输出
		for (int i = 0; i < list.length; i++)
		{
			printf("%d ", list.elem[i]);
		}
		printf("\n");

		//对GetElem函数进行测试

		if (GetElem(list, 5, e)) {
			printf("第5个元素e=%d\n", e);
		}
		else
		{
			printf("输入了非法的i值,获取元素操作失败\n");
		}
		
	}
	
	return 0;
}

4.1 测试结果

在这里插入图片描述
end

好啦,今天就到这里,有看不懂的吗?有没有?有没有? 有也雨我无瓜,咳咳,开玩笑啦 ,有问题要问的小伙伴欢迎在评论区提出,也可加我QQ一起交流

给人点赞,手留余香

预知后续操作如何,请看下集

@author 白莲居仙 QQ:1131977233

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值