线性表顺序结构基本操作

线性表的顺序存储结构
用一组地址连续的存储单元,依次存放线性表中的数据元素(线性表的起始地址s称作线性表的基地址)

顺序存储结构的实现
用结构来整合
分配空间 :
——静态:数组
——动态:指针
**

线性表顺序存储结构上基本操作的实现

**

1.初始化

Status List_lnit(SqListPtr L)
{
	Status s = success;
	L->list_size = LIST_INIT_SIZE;
	L->length = 0;
	L->elem = (ElemType*)malloc(sizeof(ElemType)*L->list_size);
	if(L->elem == NULL)
		s = fatal;
	return s;
 } 

2.查找
(1)按位置

Status List_Retrival(SqListPtr L, int pos, ElemType *elem)
{
	Status s = range_error;
	if(L){
		if((pos-1) >= 0 && (pos-1) < L->length){
			*elem = L->elem[pos-1];
			s = success;
		}
	}
	else
	s = fatal;
	return s;
}

(2)按值

Status List_Locate(SqListPtr L, ElemType elem, int *pos)
{
	Status s = range_error;
	if(L){
		for(int i = 0; i < L->length; ++i){
			if(L->elem[i] == elem){
				*pos = i+1;
				s = success;
				break;
			}
		}
	}
	else s = fatal;
	return s;
}

3.插入元素
步骤:
(1)检查插入位置是否合法,如果合法则继续,否则退出
(2)判断表是否已占满,因为是事先分配空间,可能存在所分配存储空间全部被占用的情况,此时也不能实现插入
(3)若前面检查通过则数据元素依次向后移动一个位置,为避免覆盖原数据,应从最后一个向前依次移动
(4)新数据元素放到恰当位置
(5)表长加1

Status List_Insert(SqListPtr L, int pos, ElemType elem)
{
	Status s = range_error;
	if((pos-1) >= 0 && (pos-1) <= L->length){
		if(L && L->length < L->list_size){
			for(int i = L->length-1;i >= pos-1;--i){
				L->elem[i+1] = L->elem[i];
			}
			L->elem[pos-1] = elem;
			L->length++;
			s = success;
		}
	}
	else s = fail;
	return s;
}

4.删除元素
步骤:
(1)检查删除位置是否合法
(2)若检查通过,数据元素依次向前移动一个位置
(3)表长减1

Status List_delete(SqListPtr L, int pos)
{
	Status s = range_error;
	if((pos-1) >= 0 && (pos-1) < L->length){
		if(L && L->length > 0){
			for(int i = pos; i <L->length; ++i){
				L->elem[i-1] = L->elem[i];
				L->length--;
				s = success;
			}
		}
	}
	else s = fail;
	return s;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值