线性表的定义和基本操作

1.线性表的定义

线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列,其中n为表长,当n = 0时线性表是一个空表。若用L命名线性表,则其一般表示为 L= (a1, a2, …, ai, ai+1,… , an)。
几个概念
ai是线性表中的“第i个”元素线性表中的位序 ,a1表头元素;an表尾元素
除第一个元素外,每个元素有且仅有一个直接前驱;除最后一个元素外,每个元素有且仅有一个直接后继

2.线性表的基本操作

1. 为什么要实现对数据结构的基本操作?

  • 团队合作编程,你定义的数据结构要让别人能够很方便的使用(封装);
  • 将常用的操作/运算封装成函数,避免重复工作,降低出错风险。

2.线性表的具体基本操作
InitList(&L):初始化表。构造一个空的线性表L,分配内存空间。

DestroyList(&L):销毁操作。销毁线性表,并释放线性表L所占用的内存空间。

ListInsert(&L,i,e):插入操作。在表L中的第i个位置上插入指定元素e。

ListDelete(&L,i,&e):删除操作。删除表L中第i个位置的元素,并用e返回删除元素的值。

LocateElem(L,e):按值查找操作。在表L中查找具有给定关键字值的元素。

GetElem(L,i):按位查找操作。获取表L中第i个位置的元素的值。

其他常用操作:
Length(L):求表长。返回线性表L的长度,即L中数据元素的个数。

PrintList(L):输出操作。按前后顺序输出线性表L的所有元素值。

Empty(L):判空操作。若L为空表,则返回true,否则返回false。
Tips:
①对数据的操作(记忆思路)——创销、增删改查
②C语言函数的定义—— <返回值类型> 函数名(<参数1类型>参数1,<参数2类型>参数2,……)
③实际开发中,可根据实际需求定义其他的基本操作
④函数名和参数的形式、命名都可改变(Reference:严蔚敏版《数据结构》)
⑤什么时候要传入引用“&”——对参数的修改结果需要“带回来”
3.知识回顾与重要考点
线性表的定义(逻辑结构):

  • 值得注意的特性 :数据元素同类型、有限、有序;
  • 重要术语:表长、空表、表头、表尾、前驱、后继,数据元素的位序(从1开始);

线性表的基本操作(运算):

  • 创销、增删改查(所有数据结构适用的记忆思路)
  • 判空、判长、打印输出(还可以自己根据实际需求增加其他基本操作)
  • 其他值得注意的点:理解什么时候要传入参数的引用“&”;函数命名要有可读性
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言构建线性基本操作包括:创建空、插入元素、删除元素、查找元素、获取长度等。在创建线性时需要声明相应的结构体,例如: typedef struct { int data[MAXSIZE]; int length; } SqList; 其中,MAXSIZE 是预定义线性最大长度,data 是一个数组用来存放元素,length 示当前线性中元素的个数。创建空可以通过以下代码实现: void InitList(SqList *L) { L->length = 0; } 在插入元素时需要考虑元素的位置,可以使用以下代码实现: Status ListInsert(SqList *L, int i, int e) { int j; if(i < 1 || i > L->length+1) return ERROR; if(L->length >= MAXSIZE) return ERROR; for(j=L->length; j>=i; j--) L->data[j] = L->data[j-1]; L->data[i-1] = e; L->length++; return OK; } 其中,i 示插入的位置,e 示插入的元素,如果插入位置不合法则返回 ERROR,如果线性已满则返回 ERROR,否则在指定位置插入元素,并将线性长度加一。 删除元素的操作可以使用以下代码实现: Status ListDelete(SqList *L, int i) { int j; if(i < 1 || i > L->length) return ERROR; for(j=i; j<L->length; j++) L->data[j-1] = L->data[j]; L->length--; return OK; } 其中,i 示删除元素的位置,如果位置不合法则返回 ERROR,否则将指定位置的元素删除,并将线性长度减一。 查找元素可以使用以下代码实现: int LocateElem(SqList L, int e) { int i; for(i=0; i<L.length; i++) if(L.data[i] == e) return i+1; return 0; } 其中,e 示需要查找的元素,如果找到了则返回该元素在线性中的位置,否则返回 0。 获取长度可以使用以下代码实现: int ListLength(SqList L) { return L.length; } 以上就是 C 语言构建线性基本操作

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值