顺序线性表的C语言实现函数源码

目录

1.环境设置

2.initlist(*L) :初始化操作 ,建立一个空的线性表

3.listempty(L): 判断线性表是否为空表,返回true or false

4.Clearlist(*L):清空表

5.Getelem(L,I,*e): 查询线性表L的第i个元素值并传递给变量e

6.Locateelem(L,e): 查找与变量e等值的元素,成功则返回该元素序号,否则返回FALSE

7.Listinsert(*L,I,*e):在第i个位置插入元素e

8.Listdelete(*L,I,*e):删除第i个元素,并将该元素传输到变量e中


1.环境设置

typedef   int   Elemtype;    //重定义线性表的数据类型
#define Maxsize  20          //线性表中数组元素的最大数
#define OK 1
#define FALSE 0
#define ERROR 0

//线性表结构定义
typedef struct {
	int list1[Maxsize+1];
	int length;
}sqlist;

 

2.initlist(*L) :初始化操作 ,建立一个空的线性表


int InitList(sqlist *L)
{
	L->length = 0;
	return OK;
}

3.listempty(L): 判断线性表是否为空表,返回true or false


int ListEmpty(sqlist L)
{
	return(L.length == 0 ? 0 : 1);
}

4.Clearlist(*L):清空表

int ClearList(sqlist* L)
{
	for (int i = L->length; i > 0; i--)
	{
		L->list1[i - 1] = 0;
	}
	L->length = 0;
	return OK;
}

5.Getelem(L,I,*e): 查询线性表L的第i个元素值并传递给变量e

int GetElem(sqlist L, int i, Elemtype* e)
{
	if (L.length < i||i <1||L.length==0)  return FALSE;
	else
    {
		*e = L.list1[i - 1];
		return OK;
	}
}

6.Locateelem(L,e): 查找与变量e等值的元素,成功则返回该元素序号,否则返回FALSE

int LocateElem(sqlist L, Elemtype e)
{
	int Locate =0;
	for (int i = 0; i <= L.length; i++)
	{
		if (L.list1[i] == e)
		{
			return Locate = i+1;
		}
	}
	return FALSE;
}

ps:该代码无法实现当表中有多个与e相等的元素时的查询功能。可通过创建数组返回实现。

7.Listinsert(*L,I,*e):在第i个位置插入元素e

int ListInsert(sqlist* L, int i, Elemtype e)
{			 
	if (i > 0 && i <= L->length+1&& L->length != Maxsize ) //分别指示i正常、线性表没满
	{
		for (int x = L->length; x >= i; x--)
		{
			L->list1[x] = L->list1[x - 1];
		}
		L->list1[i - 1] = e;
		L->length++;
		return OK;
	}
	else return ERROR;
}

8.Listdelete(*L,I,*e):删除第i个元素,并将该元素传输到变量e中

int ListDelete(sqlist* L, int i, Elemtype *e)
{
	if (i > 0 && i <= L->length + 1 ) //分别指示i正常
	{
		*e = L->list1[i - 1];
		for (int x = i-1; x < L->length-1; x++)
		{
			L->list1[x] = L->list1[x + 1];
		}
		L->list1[L->length - 1] = 0;
		L->length--;
		return OK;
	}
	else return ERROR;
}

你可能感兴趣的:(c语言,开发语言)