数据结构与算法

(B站青岛大学-王卓老师,数据结构与算法基础听课笔记!!!!!)

一、线性表

1、线性表的定义和特点:线性表是具有相同特性的数据元素的一个有限序列

在这里插入图片描述
线性表例子:26个英文字母组成的英文表

2、案例引入:稀疏多项式的运算

在这里插入图片描述
可以表示为:线性表A=((7,0),(3,1),(9,8),(5,17))

举个栗子:对线性表A=((7,0),(3,1),(9,8),(5,17)),
         线性表B=((8,1),(22,7),(-9,8))进行求和
         
可以通过创建一个新的数组C进行求和(如下图所示),
但是有个问题,数组C创建多大合适呢?
(顺序存储结构存在问题:存储空间分配不灵活,运算的空间复杂度高)

在这里插入图片描述

那不妨试试--链式存储结构(如下图所示)

在这里插入图片描述

3、线性表的类型定义

在这里插入图片描述


```javascript
InitList(&L)
操作结果:构造一个空的线性表L
DestroyList(&L)
初始条件:线性表L已经存在
操作结果:销毁线性表L
ClearList(&L)
初始条件:线性表L已经存在
操作结果:将线性表L重置为空表
ListEmpty(L)
初始条件:线性表L已经存在
操作结果:若线性表L为空表,则返回TRUE,否则返回FALSE
ListLength(L)
初始条件:线性表L已经存在
操作结果:返回线性表L中的数据元素个数
GetElem(L,i,&e)
初始条件:线性表L已经存在,1<=i<=ListLength(L)
操作结果:用e返回线性表L中第i个数据元素的值
LocateElem(L,e,compare())
初始条件:线性表L已经存在,compare()是数据元素判定函数
操作结果:返回L中第一个与e满足compare()的数据元素的位序,若这样的元素不存在则返回0
PriorElem(L,cur_e,&pre_e)---求当前元素的前驱
初始条件:线性表L已经存在,
操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱,否则操作失败,pre_e无意义
NextElem(L,cur_e,&next_e)---求当前元素的后继
初始条件:线性表L已经存在,
操作结果:若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无意义
ListInsert(&L,i,e)
初始条件:线性表L已经存在,1<=i<=ListLength(L)+1
操作结果:在L的第i个位置之前插入新的数据元素e,L的长度加一
ListDelete(&L,i,&e)
初始条件:线性表L已经存在,1<=i<=ListLength(L)
操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减一
ListTraverse(&L,visited())
初始条件:线性表L已经存在
操作结果:依次对线性表中每个数据元素调用visited()
4、线性表的顺序表示和实现

在计算机内,线性表有两种基本存储结构:顺序存储结构和链式存储结构

线性表的顺序表示又称为顺序存储结构或顺序映像
顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构
在这里插入图片描述
线性表顺序存储结构占用一片连续的存储空间,知道某个元素的存储位置就可以计算其他元素的位置。
在这里插入图片描述

#define LIST_INIT_SIZE 100   //线性表存储空间的初始分配量
typedef struct{
	ElemType elem[LIST_INIT_SIZE];
	int length;//当前长度
}SqList;//顺序表类型定义

在这里插入图片描述

补充一下在接下来学习中可能会遇到的C++相关的知识
1、cout << argc << endl; 是C++中的输出语句,用于将变量argc的值输出到控制台
   cout 相当于 printf()是输出函数;
   cout<<endl是使程序输出结束(有使输出结果换行的功能)
2、什么是指针?(就是存储地址)
	int i = 1;
	int *j = &i;   //定义指针变量j,取出i的地址给j

3、引用:(相当于给变量取了个别名)
	int i = 1;
	int &j = i;    //定义引用j,并且把i绑定给j,则相当于j是i的另一个名字,两者等价
	---->举个栗子吧!!!!
	#include<iostream.h>
	void main() {
		int i = 5;
		int &j = i;
		i = 7;
		cout << "i = " << i << "j = " << j;
	}
	//输出结果都为7,j是一个引用类型,代表i的一个替代名,i值改变时,j值也跟着改变,所以会输出i-7,j=7

4、#include<iostream.h>是在旧的标准C++中使用。
	在新标准中,用#include<iostream>,iostream 的意思是输入输出流。
	#include<iostream>是标准的C++头文件,
5、线性表的链式表示和实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值