数据结构
数据结构研究数据之间的关系
数据元素是数据的基本单位
一、数据
数据是信息的载体
二、数据元素
数据项是数据元素的基本单位,数据元素由若干基本项组成
三、数据类型
对数据元素取值范围与运算的限定
四、数据结构
定义:
是研究数据元素之间的相互关系,或数据组织的形式。
分清逻辑关系和存储关系
数据结构概念
1.逻辑结构
根据前驱和后继
集合
线性结构
非线性结构
树
图
2.存储结构(物理结构)!=线性结构
I.、顺序存储 数组
借助相对位置
连续的地址
指针加一和地址加一的区别
II、链式存储
借助指针
III、索引存储
建立索引表
索引存储结构=数据文件+索引表
IV、散列存储
hash结构
V、数据运算
增 删 改 查 排序
六、算法
1.定义:算法是一个有穷规则的有序集合
2.算法的特性
1.有穷 算法执行步骤是有限的
2.确定 每个计算步骤无二义性
3.可行 每个计算步骤能在有限的时间内完成
4.输入 算法有零个或多个外部输入
5.输出 算法有一个或多个输出
算法分析
1.语句的频度
可执行语句在算法中执行的次数
2.时间复杂度T(n)
T(n)= O(2n)——指数级,时间复杂度最差。
不同的两个问题时间复杂度累加
T(m,n)= T1(m)+ T2(n)=O(f(m)+g(n))。
看用多长时间
3.空间复杂度D(n)
看占用多大内存
线性表
特征:
1)对非空表,a0是表头,无前驱
2)an-1是表尾,无后继
3)每个元素只有一个前驱和一个后继
顺序存储结构
数组 空间先固定好,连续存储
特点:
1.逻辑相邻的,位置也相邻,地址相邻
2.对逻辑元素ai的存取为随机或按地址存取
3.存储密度高
缺点:插入删除时间复杂度差
优点:遍历(查找)方便
#include<stdio.h>
#define maxsize 10
#include<stdlib.h>
typedef int postype;
typedef int datatype;
typedef struct list{
datatype data[maxsize];
postype last;
}seqlist,*seqlist_p;
seqlist_p createseqlist(void);
seqlist_p createseqlist(void){
//如果不定义指针,L为局部变量,不能应用到主函数数中。局部变量存储在栈区。malloc存储在堆区。
seqlist_p L = NULL;
//防止野指针出现
L = (seqlist *)malloc(sizeof(seqlist));
if(NULL == L){
printf("error\n");
return NULL;
}
L->last =-1;
return L;
}
int main(){
seqlist_p L1;
L1 = createseqlist();
return 0;
}
1.位置是否合法
last+1(0<?<N-1)(0<=pos<=last+1)
2.移位置
for(i=last;i >=pos;i--)
{
data[i+1]=data[i];
}
data[pos]=x;
last++;