一个简易的顺序存储的线性表
这个程序只包含了所需要的函数,而且都比较简单
并且没有详细注释
包含了创建,初始化,销毁,清空,获取元素个数,查找特定元素,删除指定元素,插入,查看是否为空,取出特定元素
#include<iostream>//一个简易的伪通用顺序存储的线性表
#include<cassert>
#define OK 1//函数运行成功
#define ERROR 0//函数运行失败
const int max1 = 100;//顺序存储元素的最大值
typedef int Status;//假装是所有类型的数据
typedef char Elemtype;
typedef struct list //线性表定义
{
Elemtype* arr;
int length;
}List;
int InitList(List& L) //初始化线性表
{
L.arr = new Elemtype[max1];
if (!L.arr)
{
return ERROR;
}
L.length = 0;
return OK;
}
void DestroyList(List& L)//销毁线性表
{
delete[] L.arr;
L.arr = nullptr;
L.length = 0;
}
void ClearList(List& L)//清空线性表
{
L.length = 0;
}
int GetLength(const List& L)//获取线性表数据元素个数
{
return L.length;
}
void IsEmpty(const List& L)//判断是否为空
{
if (L.length)
{
std::cout << "不空\n";
}
else
{
std::cout << "空\n";
}
}
int GetElem(int i,const List& L, Elemtype& n)//取出特定位置的元素
{
if (i < 1 || i > L.length)
{
return ERROR;
}
n = L.arr[i - 1];
return OK;
}
int ValueFind(Elemtype n, const List& L)//按值查找元素位置
{
int i = 0;
for (;i < L.length; i++)
{
if (L.arr[i] == n)
{
return i + 1;
}
}
std::cout << "未找到\n";
return 0;
}
int InsertList(int i, List& L, Elemtype n)//插入数据元素,允许尾插
{
if (L.length == max1 || i < 1 || i > L.length + 1)
{
return ERROR;
}
int j = L.length - 1;
for (; j >= i - 1; j--)
{
L.arr[j + 1] = L.arr[j];
}
L.arr[i - 1] = n;
L.length++;
return OK;
}
int DeleteElem(int i, List& L)//删除指定位置的元素
{
if (i < 1 || i >L.length)
{
return ERROR;
}
int j = i;
for (; j <= L.length - 1; j++)
{
L.arr[j - 1] = L.arr[j];
}
L.length--;
return OK;
}
后续还可以写扩容函数,或者其他方式改进,该线性表比较简易

浙公网安备 33010602011771号