您的位置:首页 > 其它

线性表顺序存储

2018-02-22 14:25 218 查看
#define maxsize 20
#define ok 1
#define error 0
#define true 1
#define false 0
typedef int elemtype;
typedef struct
{
elemtype data[maxsize];
int length;
}sqlist;

//search
elemtype getelem(sqlist l, int i, elemtype *e)
{
if (l.length == 0 || i<i || i>l.length)
return error;
*e = l.data[i - 1];
return ok;
}
//insert
elemtype listinsert(sqlist *l, int i, elemtype e)
{
int k;
if (l->length == maxsize)
return error;
if (i<1 || i>l->length + 1)
return error;
if (i <= l->length)
{
for (k = l->length - 1; k >= i - 1; k--)
{
l->data[k + 1] = l->data[k];
}
}
l->data[i - 1] = e;
l->length++;
return ok;
}
//delete
elemtype listdelete(sqlist *l, int i, elemtype *e)
{
int k;
if (l->length == 0)
return error;
if (i<1 || i>l->length)
return error;
*e = l->data[i - 1];
if (i < l->length)
{
for (k = i; k < l->length; k++)
l->data[k - 1] = l->data[k];
}
l->length--;
return ok;

}

线性表顺序存储,基于数组,整个结构在内存地址中是连续的,可以实现随机查找,时间O(1);
但是增删,需要移动大量元素,时间O(n)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: