王道计算机考研 数据结构

【代码部分在最后面
C语言线性表CTRL+F查找代码
】
数据元素


1.2数据元素三要素

集合

线性结构

树形结构

逻辑结构总和

物理结构


存储结构

数据结构注意问题

总结:
先通过逻辑结构,和数据运算将关系表达明确,在通过物理结构实现代码


如:bool ,int,struct都是数据类型
算法特性

健壮性
非法数据能够输出反应,而不是乱码
高效率,低存储量需求
有穷性
运行的时间有限,会结束
确定性
能确定结果的输出

时间复杂度
1.2-2算法效率度量

时间复杂度

log(2)^n的写法

最好复杂度和最坏复杂度以及平均复杂度


1.23算法空间复杂度:

如果算法的空间复杂度是常数阶的话,求称算法能够原地工作

例子1

例子2

例子3

例子4.函数调用也会引起内存增加

空间大小4(n)+12(a,b,c)=16bit


空间复杂度=递归调用的深度

2.1线性表定义

【用C++的可以把&L理解成对一个表的引用,用C语言的可以把&L理解成指向表的指针】弹幕

命名方式要注意

知识总结

2.21顺序表的定义

顺序表的定义

静态分配

初始化很有必要,应为有些编译器不会帮你初始化

编译器会强制类型转换,但是再写一遍能多学习一点

代码



C语言线性表
#include <stdlib.h>
#include <stdio.h>
#define MaxSize 10
#define InitSize 10
typedef struct{
int *data;//定义一个指针来接收这些数据
int maxSize;//MaxSize
int length;//长度
}SeqList;
// 2.1动态顺序表的初始化
void InitSeqList(SeqList *L){
(*L).data=(int *)malloc(sizeof(int)*InitSize);
(*L).length=1;//(*L).length等价于L->length
L->maxSize=0;
}
int main()
{
SeqList a;
printf("%d\n",a.data[5]);
InitSeqList(&a);
----------------保护线----------------
----------------防手残----------------