数据结构--线性表

本文介绍了线性表的定义,包括它是一个有序元素序列,每个元素除首尾外都有唯一前后继。线性表的基本操作包括初始化、判断空表、获取元素、插入和删除等。接着讨论了线性表的两种存储结构:顺序存储和链式存储。顺序存储使用数组实现,插入删除操作可能涉及大量数据移动。链式存储通过指针链接元素,解决了插入删除效率问题。文章提供了部分C语言实现的代码示例。
摘要由CSDN通过智能技术生成

线性表的定义与基本使用

定义

线性表是一个序列,元素之间是有序列的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继。如果一个元素有两个前驱或后继,就不算是有序排列。并且线性表是有限的,无限的数列,只存在于数学的概念中。
若将线性表记为(a1,…,ai-1,ai,ai+1,…,an),则表中ai-1是ai的前驱,ai+1是ai的后继,并且都是唯一的。线性表的元素个数n定义为线性表的长度,当n=0时,成为空表。

基本操作

1.初始化,建立一个空的线性表;
2.判断线性表是否为空;
3.将线性表清空;
4.获取线性表的第i个元素;
5.查找线性表中是否有元素e存在;
6.在线性表中的第i个位置插入元素e;
7.删除线性表中的第i个元素,并用e返回其值;
8.返回线性表的元素个数。
这些函数都是些基本函数,很好实现,只是用数组来实现线性表时,插入和删除需要大量数据的移动。我们这里设置一下函数名并实现一个简单操作:使得A=A∪B。
在这里插入图片描述

void unio(List *La,List *Lb)
{
   
 int La_len,Lb_len,i;
 Elemtype e;  //自己定义的e的类型
 La_len=ListLength(La);  //求线性表的长度 
 Lb_len=ListLength(Lb);  
 for(i=1;i<=Lb_len;i++)
 {
   
  GetElem(Lb,i,e);  //查找线性表的的第i个元素 
  if(!LocateElem(La,e))  //线性表a中不存在和e相同的元素 
   ListInsert(La,++La_len,e);  //将元素e插入线性表a尾部 
 }
}

我们在这里设置的unio函数只是将上面的基本操作合起来实现

线性表的存储结构

顺序存储

在这里插入图片描述
c语言可以直接用一维数组实现,所以并不是很难理解,数组的长度就

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值