线性表-线性存储结构

这篇博客介绍了线性表的基本操作,包括初始化、判断空表、清空、获取元素、查找、插入、删除及获取长度。同时,详细阐述了如何通过线性表操作实现两个集合的并集,以及查找元素的方法。该文突出了线性表在存储和快速访问元素上的优势,同时也指出了其在插入和删除操作中可能存在的效率问题和存储碎片的挑战。
摘要由CSDN通过智能技术生成

线性表(List):由零个或多个数据元素组成的有限序列。

线性表操作:

InitList(*L):初始化操作,建立一个空的线性表L。
ListEmpty(L):判断线性表是否为空表,若线性表为空,返回true,否则返回false。
ClearList(*L):将线性表清空。
GetElem(L,i,*e):将线性表L中的第i个位置元素值返回给e。
LocateElem(L,e):在线性表L中查找与给定值e相等的元素,如果查找成功,返回该元素在表中序号表示成功;否则,返回0表示失败。
ListInsert(*L,i,e):在线性表L中第i个位置插入新元素e。
ListDelete(*L,i,*e):删除线性表L中第i个位置元素,并用e返回其值。
ListLength(L):返回线性表L的元素个数。

并集操作:

//La表示A集合,Lb表示B集合
void union(List *La,list Lb)
{
    int La_len,Lb_len,i;
    ElemType e;
    La_len = ListLength(*La);
    Lb_len = ListLength(Lb);
    for(i=1;i<=Lb_len;i++)
    {
        GetElem(Lb,i,&e);
        if(!LocateElem(*La,e))
        {
            ListInsert(La,++La_len,e);
        }
    }
}

查找元素操作:

int GetElem(SqList L,int i,ElemType *e)
{
	if(L.length==0 || i<1 || i>L.length)
	{
		return 0;
	}
	*e = L.data(i-1);
	return 1;
}

优点:

  • 无需为表示表中元素之间的逻辑关系而增加额外的存储空间。
  • 可以快速地存取表中任意位置的元素。

缺点:

  • 插入和删除操作需要移动大量元素。
  • 当线性表长度变化较大时,难以确定存储空间的容量。
  • 容易造成存储空间的 “碎片“。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值