数据结构——线性表知识点(1)——线性表的类型定义

线性表


线性结构的定义

若结构是非空有限集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。

如:a1->a2->...->an

线性结构的特点

  1. 只有一个首结点和尾结点
  2. 除首尾结点外,其它结点只有一个直接前驱和一个直接后继

线性结构反映结点间的逻辑关系一对一

包括:线性表,堆栈,队列,字符串,数组等


线性表的定义和特点

定义:用数据元素的有限序列表示

n=0时称为空表

线性表的类型定义

顺序存储

线性表的顺序表示又称为顺序存储结构顺序映像顺序表

顺序存储定义

把逻辑上相邻的数据元素存储在物理上相邻的单元中的存储结构

顺序表的类型定义

#define MAXSIZE 100 //最大长度
typedef struct{
    ElemType *elem; //指向数据元素的基地址
    int length; //线性表的当前长度
}SqList;

顺序存储方法

用一组地址连续的存储单元依次存储线性表的元素,,可通过数组V[n]来实现

顺序存储结构存在的问题

  1. 存储空间分配不灵活
  2. 运算的空间复杂度高

链式存储


补充

C语言的动态分配函数(<stdlib.h>)

malloc(m):开辟m字节长度的地址空间,并返回这段空间的首地址

sizeof(x):计算变量x的长度

free(p):释放指针p所指变量的存储空间

C++的动态存储分配

int *p1 = new int;或int *p1 = new int(10)

new 类型名T (初值列表)

功能:申请用于存储方T类型对象的内存空间,并依初值列表赋以初值

结果值:成功——T类型的指针,指向新分配的内存,失败——0(null)

delete 指针P

delete p;

功能:释放指针P所指向的内存,P必须是new操作的返回值

C++中的参数传递

函数调用时传送给形参表的实参必须与 形参在类型、个数、顺序上保持一致

参数传递有两种方式

  • 传值方式(参数为整型,实型,字符型等)
  • 传地址(参数为指针变量,引用类型,数组名)

引用类型作形参的三点说明

  1. 传递引用给函数与传递指针的效果是一样的,形参变化实参也发生变化
  2. 引用类型作形参,在内存中并没有产生实参的副本,它直接对实参操作,而一般变量作参数,形参与实参就占用不同的存储单元,所以形参变量的值是实参变量的副本,因此,当参数传递的数据量较大时,用引用比用一般变量传递参数的时间和空间效率都好
  3. 指针参数虽然也能达到与使用引用的效果,但在被调用函数需要重复使用“*指针变量名”的形式,进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用处,必须用变量的地址作为实参。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值