你要会的话,对照一下,不会的话,直接看懂默写下来
//#include<cstdio>
//#include<iostream>
//#include<algorithm>
//#include<cstring>
//#define Maxsize 11
//using namespace std;
初始化
//定义线性表 指定element为int类型为参考(可以根据情况调整)
//重点注意:我们的线性表位置是1开始的,但是实际操作数组是从0开始的
typedef struct {
int data[Maxsize];
int length;
}Sqlist;
// 初始化,全置0
void InitList(Sqlist &L)
{
for(int i = 0;i < Maxsize;i ++)
L.data[i] = 0;
L.length = 0;
}
// 初始化 动态分配存储
void InitqList(SeqList &L) {
L.data = (int*)malloc(sizeof(int)* Maxsize);
L.length = 0;
}
查找
// 指定位置查找并返回数值
int GetElem(Sqlist L,int t)
{
//判断线性表是否为空
if(L.length == 0)
return false;
//判断是是否合法
if(t < 1 || t > L.length)
return false;
//取到对应位置返回
int e = L.data[t - 1];
return e;
}
// 指定元素查找并返回位置
int LocateElem(Sqlist L,int x)
{
//这里不需要判断表是否为空,因为for中直接有判断
for(int i = 0;i < L.length;i ++)
if(L.data[i] == x)
return i + 1;
return false;
}
插入
bool布尔类型直接返回是否操作成功(成功true,失败false)
// 将元素插入指定位置
bool ListInsert(Sqlist &L,int x,int t)
{
//判断线性表是否已满
if(L.length == Maxsize)
return false;
//判断插入位置是否合法
if(t < 1 || t > L.length)
return false;
//从后往前挨个移动元素,空出插入的位置
for(int i = L.length;i >= t;i --)
L.data[i] = L.data[i - 1];
//插入并更新线性表
L.data[t - 1] = x;
L.length ++;
return true;
}
删除
// 删除指定位置的元素
bool Listdelete_id(Sqlist &L,int t)
{
//判断线性表是否为空
if(L.length == 0)
return false;
//判断删除的位置是否合法
if(t < 1 || t > L.length)
return false;
//删除第t个元素就是后面所有元素向前覆盖
for(int i = t;i < L.length;i ++)
L.data[i - 1] = L.data[i];
//更新线性表
L.length --;
return true;
}
// 删除指定元素
bool Listdelete_ele(Sqlist &L,int e)
{
//判断线性表是否为空
if(L.length == 0)
return false;
//先找到指定元素所在位置,如果找不到就是不存在
int t = -1; //存储要删除元素的位置
for(int i = 0;i < L.length;i ++)
if(L.data[i] == e)
t = i;
//判断是否找到要删除的元素位置
if(t != -1)
{
//找到了,就删除第t个元素,也就是后面所有元素向前覆盖
for(int i = t;i < L.length - 1;i ++)
L.data[i - 1] = L.data[i];
//更新线性表
L.length --;
return true;
}
else
return false;//没有找到返回fasle
}
发现有问题了,及时跟我反应
返回目录:
https://www.acwing.com/file_system/file/content/whole/index/content/5976074/
辛苦