线性表顺序存储结构的基本操作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