线性表《一》
【引子】多项式的表示:同一个问题可以有不同的存储方法;有一类共性问题,有序线性序列的组织和管理
顺序存储结构表示非零项:相加过程,比较两个多项式当前对应项的指数(a,j)数组实现
链表结构存储非零项:链表中每个结点存储多项式中的一个非零项,包括系数和指数两个数据域以及一个指针域
coef | expon | link |
typedef struct PolyNode *Polynomial; struct PolyNode{
int coef;
int expon;
Polynomial link;
}
【什么是线性表】由同类型数据元素构成有序序列的线性结构;表中元素个数称为线性表表尾的长度;线性表没有元素时,称为空表;表起始位置称表头,表结束位置称表尾。
《一》线性表的抽象数据类型描述
类型名称:线性表(List)
数据对象集:线性表是n(>=0)个元素构成的有序序列(a1,a2,...an)
操作集:线性表L€List,整数i表示位置,元素X€ElementType,线性表基本操作主要有:
1、List MakeEmpty():初始化一个空线性表L;
2、ElementType FindKth(int K,List L):根据位序K,返回相应元素;
3、int Find(ElementType X,List L):在线性表L中查找X的第一次出现位置;
4、void Insert(ElementType X,int i,List L):在位序i前插入一个新元素X;
5,void Delete(int i,List L):删除指定位序i的元素;
6,int Length(List L):返回线性表L的长度n.
《二》线性表的存储实现
利用数组的连续存储空间顺序存放线性表的各元素
Data | a1 | a2 | ...... | ai | ai+1 | ...... | an | ...... | - |
typedef sturct LNode*List; struct LNode{ ElementType Data[MAXSIZE]; int Last; }; struct LNode L; List PtrL;
访问下标为i的元素:L.Data[i]或PtrL->Data[i]
线性表的长度:L.Last+1或PtrL->Last+1
主要操作实现
1,初始化(建立空的顺序表)
List MakeEmpty() { List PtrL; PtrL=(List)malloc(sizeof(struct LNode)); PtrL->Last=-1; return PtrL; }
2,查找
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端