学习笔记——数据结构(WEEK 1)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


数据结构

绪论

在这里插入图片描述

数据结构研究(非数值计算)

1.管理系统

操作对象:若干条数据记录

操作算法:查询、插入、修改、删除等

对象之间关系:线性关系

数据结构:线性数据结构、线性表

2.棋局、文件系统

操作对象:棋局状态

算法:选择一种策略使棋局状态发生变化

对象之间关系:非线性、

3.地图最短路径

图,网状结构

基本术语

在这里插入图片描述

数据
数据元素
数据项

数据》数据元素》数据项

数据对象

性质相同的数据元素的集合

数据结构

数据元素之间的关系
包括:
1. 逻辑结构(数据结构的抽象)
2. 数据元素极其关系在内存中的表示(映像)物理结构或存储结构(数据结构的实现)
3. 数据的运算或实现
逻辑结构种类:
1. 线性(只有一个开始及终端)/非线性(非1v1)
2. 四种:集合,线性,树形,图状
存储结构:
1. 顺序存储结构,连续的存储单位依次存储(数组)
2. 链接存储结构,任意的存储单位(指针)
3. 索引存储结构,存储同时建立附加索引表
4. 散点存储结构,根据结点关键字计算

数据类型与抽象数据类型

数据类型作用:约束取值范围,约束操作
抽象数据类型(ADT):一个数据模型以及定义数学模型上操作

  1. 逻辑结构
  2. 抽象运算(相关操作)
  3. 不考虑计算机内具体存储结构与运算的具体实现算法
    形式定义:(DSP)
    D:数据对象
    S:D上的关系集
    P:对D的基本操作集
    ADT 类型名{
    数据对象:<>
    数据关系:<>
    基本操作:<>
    }ADT 类型名
    基本操作:参数表(引用参数用&打头),初始条件,操作结果
    举例
    举例circle

抽象数据类型的表示与实现

类C语言(介于伪码与C语言)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include<stdbool.h>
typedef struct{
    float realpart;
    float imaqpart;

}Complex;
void assign(Complex *A, float real, float imag){
    A->realpart = real;
    A->imaqpart = imag;
}
void add(Complex *c,Complex a,Complex b){
    c->realpart = a.realpart+b.realpart;
    c->imaqpart = a.imaqpart+b.imaqpart;
}
void multipy(Complex *c,Complex a,Complex b){
    c->realpart = a.realpart*b.realpart-a.imaqpart*b.imaqpart;
    c->imaqpart = a.realpart*b.imaqpart+a.imaqpart*b.realpart;
}
bool divide(Complex *c,Complex a,Complex b){
    float k = pow(b.realpart,2)+pow(b.imaqpart,2);
    if (k!=0){
        Complex b_p,c_p;
        b_p.realpart = b.realpart;
        b_p.imaqpart=-b.imaqpart;
        multipy(&c_p,a,b_p);
        c->realpart =c_p.realpart /k;
        c->imaqpart = c_p.imaqpart/k;
        return true;
    }
    else{
        return false;
    }
   }
int main()
{
    Complex C,a,z1,z2,z3;
    assign(&C,8.0,6.0);
    assign(&a,4.0,3.0);
    add(&z1,a,C);
    printf("%f +i%f",z1.realpart,z1.imaqpart);
    multipy(&z2,a,C);
    printf("%f +i%f",z2.realpart,z2.imaqpart);
    if(divide(&z3,z2,z1)){
        printf("%f +i%f",z3.realpart,z3.imaqpart);
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值