一个简易的顺序存储的线性表

这个程序只包含了所需要的函数,而且都比较简单
并且没有详细注释
包含了创建,初始化,销毁,清空,获取元素个数,查找特定元素,删除指定元素,插入,查看是否为空,取出特定元素

#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;
}

后续还可以写扩容函数,或者其他方式改进,该线性表比较简易

posted @ 2026-06-04 15:41  好想成为人类啊  阅读(28)  评论(0)    收藏  举报