【计算机408学习笔记】C语言(中级) 09数据结构概述

本文介绍了数据结构中的逻辑结构(如集合、线性、树形和图形结构),存储结构(顺序、链式、索引和散列)及其在C语言中的实现。重点讨论了时间复杂度(如数组和循环结构示例)和空间复杂度(包括原地工作和排序空间分析)的概念。
摘要由CSDN通过智能技术生成

09数据结构概述

二、与408关联解析
  • 逻辑结构与存储结构
  • 时间复杂度与空间复杂度(大题必考)
三、 逻辑结构与存储结构
  • 逻辑结构:数据元素之间的逻辑关系(抽象的)。
  • 存储结构:数据结构在计算机中的表示(具体的)。
  • 逻辑结构:集合结构(无关系);线性结构(一对一);树形结构(一对多);图形结构(多对多)。
  • 线性结构中:前面的称为前驱(如1)、后面的称为后继(如2)。
  • 存储结构: 顺序存储、链式存储、索引存储、散列存储。(后两种结构也是通过前两种结构来实现)
  • C语言实现:
int Array[6]={1,2,3,4,5,6};//定义数组并初始化
printf(“%d\n”, Array[3]) //随机访问第4个元素
  • C语言实现:
Typdef struct Lnode{
    ElemType data;
    struct Lnode *next;
}Lnode,*LinkList;

Lnode *L;
L=(LinkList)malloc(sizeof(Lnode));
A->next=B;B->next=C
  • 逻辑结构对人友好,存储结构对计算机友好。
  • 顺序存储与链式存储分析
(1)顺序存储可以实现随机存取;每个元素占用最少的空间;但只能使用整块的存储单元,会产出较多的碎片。
(2)链式存储充分利用所有存储单元,不会出现碎片现象;但需要额外的存储空间来存放下一结点的指针;只能实现顺序存取。
四、 时间复杂度与空间复杂度
  • 算法:对特定问题求解步骤的描述。
  • 特性:有穷、确定、可行、输入、输出。
  • 时间复杂度:指算法中所有语句的频度((执行次数))之和。记为:T(n)=O(f(n)),其中n是问题的规模,f(n)是问题规模n的某个函数。表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同。
  • 访问数组中的任意元素:O(1)。
  • 时间复杂度的计算
  • 例子
int sum=0; //执行一次
sum=n*(n+1)/2; //执行一次
printf(“%d”,sum); //执行一次

算法的执行次数等于3。时间复杂度为T(n)=O(1)。表示不会随n的增长而增长。

  • 例子
int x=2;
while(x<n/2)
x=2*x;
  • 例子
int sum=0,i=1;
while(i<n){
    sum=sum+i;
    i++;
}
printf(“%d”,sum);
  • 例子
int i,x=2;
for(i=0;i<n;i++)
{
    x=0;
    while(x<n/2)
        x=2*x;
}
  • 例子
int i,j;
for(i=0;i<n;i++){
    for(j=0;j<m;j++)
        sum=sum+1;
}
  • 例子
int sum1=0,sum2=0,i,j;
for(i=0;i<n;i++)
    sum1=sum1+i;
for(j=0;j<m;j++)
    sum2=sum2+j;
printf(“%d,%d”,sum1,sum2);
  • 例子
  • 空间复杂度:指算法运行过程中所使用的的辅助空间的大小。记为S(n)=O(f(n))。
  • 除了需要存储算法本身的指令、常数、变量和输入数据外,还需要存储对数据操作的存储单元。
  • 若输入数据所占空间只取决于问题本身, 和算法无关, 这样只需分析该算法在实现时所需的辅助单元即可。
  • 算法原地工作是指算法所需的辅助空间是常量, 即O(1)。
  • n个元素的数组元素排序,不开辟额外的空间(随n的增长而增长的空间为额外空间),此时空间复杂度就是O(1)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

废柴老妈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值