线性表的顺序存储结构

看了很多应届生的面试题,大多数还都是基础性的题目,这里回顾总结一下数据结构的内容:

const int MAXSIZE = 20;	//线性表存储元素个数
typedef int ElemType;		//存储数据类型

typedef struct
{
	ElemType data[MAXSIZE];
	int length;
}SqList;

void InitList(SqList *L)	//初始化链表
{
	L->length = 0;
}

bool ListEmpty(SqList L)	//判断是否为空
{
	if (L.length == 0)
	{
		return true;
	}

	return false;
}

void ClearList(SqList *L)	//清空操作
{
	L->length = 0;
}

bool GetElem(SqList L, int i, ElemType *e)	//将L中的第i个位置元素返回给e。
{
	if (L.length==0 || i<0 || i>L.length)
	{
		return false;
	}
	*e = L.data[i-1];

	return true;
}

int LocateElem(SqList L, ElemType e)		//查找给定e值相等的元素,如果成功返回该值在表中的序号,否则返回0
{
	if (L.length == 0)
	{
		return 0;
	}
	for (int i=0; i<L.length; i++)
	{
		if (L.data[i] == e)
		{
			return i+1;
		}
	}
	
	return 0;
}

bool ListInsert(SqList *L, int i, ElemType e)	//在线性表L中第i位置处插入e
{
	if (L->length+1 < i || i<1)
	{
		return false;
	}
	if (L->length == MAXSIZE)
	{
		return false;
	}
	if (i<=L->length)
	{
		for (int k=L->length; k>=i; k--)
			L->data[k+1] = L->data[k];
	}
	L->data[i-1] = e;
	L->length++;
	return true;
}

bool ListDelete(SqList *L, int i, ElemType *e)		//删除节点
{
	if (L->length == 0)
		return false;
	if (i<1 || i>L->length)
		return false;
	*e = L->data[i-1];
	if (i < L->length)
	{
		for (int k=i; k<L->length; k++)
		{
			L->data[k-1] = L->data[k];
		}
	}
	L->length--;

	return true;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值