线性表
定义:具有相同数据类型的n(n>=0)个数据元素的有限序列
定义内重点:
- 数据类型相同
- 有限个
- 有顺序
- n可以为0
如果用数学符号描述
L = ( a 1 , a 2 , . . . . , a i , a i + 1 , . . . . , a n ) L=(a_{1},a_{2},....,a_{i},a_{i+1},....,a_{n}) L=(a1,a2,....,ai,ai+1,....,an)
概念:
- 其中下标表示线性表中的第i个,也就是位序。位序从1开始,而计算机存储从0开始
- 除了第一个元素,每一个元素都具有一个直接前驱
- 除了最后一个元素,每一个元素都具有一个直接后继
c的基本函数
主要为类型别名、空间开辟回收函数
typedef
typedef <数据类型名称> <别名>
通常用来给一个系统定义的基本类型来定义一个别名,方便编写程序。最经常与c中的结构体定义连用
struct student{ //声明一个学生结构体
int id;
char * name;
};
struct student stu; //定义一个学生结构体变量,叫做stu
定义一个新的就需要写struct不方便。
typedef struct{
int id;
char *name;
}student;
student stu;
需要特别说明
typedef struct{
int val;
Node * next;
}Node, *List;
List i_am_list;
这里的List其实等价于Node *,即声明List就是声明这个结构体指针。通常这么写是为了区分这个是链表头指针还是链表当中的一个结点。
malloc申请空间函数与free回收空间函数
void * malloc(int size); //调用函数,程序向操作系统申请一段连续区域,并且返回连续区域的头指针,size单位为B字节
free(void * ptr); //调用函数,释放ptr在malloc函数申请的内存空间
int sizeof(name); //传入通常为基本数据类型名称或自动义数据类型名称,返回一个单位所占用的字节数
一个进行内存空间的申请,一个为内存资源的回收,通常二者成对存在。
调用malloc传入参数为字节数,通常与size函数搭配使用,sizeof(数据类型名称) * 需要申请的个数。
指针说明:
可以理解为指针也是一个数据类型,但是内部存放的数据都是每一个变量的地址,位数取决于操作系统。所以无论是int类型还是其他什么自定义类型的指针大小都是相同的,取决于操作系统。但是对于指针进行分类是数据读取时候的需要。读取数据不仅需要知道该数据的首址,还需要知道该数据占多少个字节。说明了该指针的类型,计算机也就知道应该从首址后面读取多少个字节。