华清远见嵌入式学习day07——数据结构总览及线性表

                                                         数据结构

       数据结构研究数据之间的关系
       数据元素是数据的基本单位

 一、数据   

       数据是信息的载体
二、数据元素
      数据项是数据元素的基本单位,数据元素由若干基本项组成
三、数据类型
      对数据元素取值范围与运算的限定
四、数据结构

定义:
    是研究数据元素之间的相互关系,或数据组织的形式。
    分清逻辑关系和存储关系

数据结构概念
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++;

猜你喜欢

转载自blog.csdn.net/UemTuBXuR/article/details/88648103