数据结构的概述

01.02.03课程

预备知识:

模块一:线性结构

连续存储(数组)

离散存储(链表)

线性结构的两种常见应用之一:栈

线性结构的两种常见应用之二:队列

专题:递归

1. 1+2+3+......+100的和

2. 求阶乘

3. 3.汉诺塔

4. 走迷宫

模块二:非线性结构

模块三:查找和排序

排序:冒泡、插入、选择、快速、归并排序

补充:

java中的容器和数据结构的相关知识.

Iterator 接口

Map 哈希表

书籍推荐:

严蔚敏、吴伟明 《数据结构》---伪算法

高一凡 --西电

黄国瑜

数据结构

定义:我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能而执行相应的操作,这个相应的操作也叫做算法。

数据要怎么去存?---数据结构所研究的问题

怎么去操作数据?---算法

数据结构=个体+个体的关系

算法=对存储数据的操作

算法:解题的方法和步骤.

衡量算法的标准:

1. 时间复杂度

大概程序要执行的次数,而非执行的时间

2. 空间复杂度

算法执行过程中大概所占用的最大内存

3. 难易程度

4. 健壮性

数据结构的地位

数据结构是软件中最核心的内容

数据库  字段  --属性

记录  --一个事务

表    --事务的集合

程序 = 数据的存储+数据的操作+可以被计算机执行的语言

学完此课程,你会发现你什么都干不了,并且这门课程很难,很重要。它可以促进我们对其他课程的学习,慢慢的发酵。

04.05.06课程

预备知识

指针是C语言的灵魂

地址:内存单元的编号,从0开始的非负整数,0-FFFFFFFF.

指针就是地址,地址就是指针。

[cpp] view plaincopyprint?
  1. void show_array(int *p,int len)
  2. {
  3. p[2]=-1;
  4. }
  5. int main(void)
  6. {
  7. int a[5]={1,2,3,4,5};
  8. show_array(a,5);
  9. printf(“%d\n”,a[2]);
  10. return 0;
  11. }
  12. a[2]的值已经改变了,变成了-1.改变的是地址。
  13. p[2]==*(p+2)==*(a+2)==a[2]
  14. p[0]==*(p+0)==*p
  15. 如果要循环遍历数组
  16. void show_array(int *p,int len)
  17. {
  18. for(i=0; i<len; i++)
  19. {
  20. printf(“%d\n”,p[i]);
  21. }
  22. }
void show_array(int *p, int len)
{
p[2]=-1;
}
int main(void)
{
int a[5]={1,2,3,4,5};
show_array(a,5);
printf(“%d\n”,a[2]);
return 0;
}
a[2]的值已经改变了,变成了-1.改变的是地址。
p[2]==*(p+2)==*(a+2)==a[2]
p[0]==*(p+0)==*p
如果要循环遍历数组
void show_array(int *p, int len)
{
for(i=0; i<len; i++)
{
printf(“%d\n”,p[i]);
}
}

06.07.08课程

结构体--是数据类型,只有属性,没有方法。

struct Student

{

//属性

};

分号不能省略。

为什么会出现结构体?

为了表示一些复杂的数据而普通的基本类型变量已经无法满足要求。

什么叫结构体?

结构体是用户根据实际需要自己定义的复合数据类型。

如何使用结构体:

struct Student

{

int id;

String name;

int age;

};

struct Student st ={1000, ”zhangsan”, 20};

struct Student *s = &st;

st.id = s->id;

s->name=”lisi”;

s->id ==>(*s).id ==>st.id;

09.10课程

动态分配内存的概述 malloc()

跨函数使用内存

java中 A a = new A();

C中  A *a = (A *) malloc(sizeof(A));

[cpp] view plaincopyprint?
  1. #include<stdio.h>
  2. #include<malloc.h>
  3. struct Student
  4. {
  5. int id;
  6. int age;
  7. };
  8. struct Student *createStudent(void);
  9. void showStudent(struct Student *);
  10. int main(void)
  11. {
  12. struct Student *s;
  13. s = createStudent();
  14. showStudent(s);
  15. return 0;
  16. }
  17. struct Student* createStudent(void)
  18. {
  19. struct Student * s = (struct Student *) malloc(sizeof(struct Student));
  20. s->id=10000;
  21. s->age=20;
  22. return s;
  23. }
  24. void showStudent(struct Student*)
  25. {
  26. printf(“%d %d\n”,s->id, s->age);
  27. }

数据结构学习篇(一)---大纲、简介、作用相关推荐

  1. HFSS学习笔记(一)基础篇 操作界面简介和使用前的准备工作

    HFSS学习笔记(一)基础篇 操作界面简介和使用前的准备工作 一.HFSS工作界面简介 各区域的功能: 二.设计的步骤 1.创建工程文件 2.进行设计前的准备工作 一.HFSS工作界面简介 各区域的功 ...

  2. CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念)、早期/中期/近期应用领域(偏具体应用)、经典CNN架构(偏具体算法)概述、常用工具/库/框架/产品、环境安装、常用数据集、编程技巧

    CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念).早期/中期/近期应用领域(偏具体应用).经典CNN架构(偏具体算法)概述.常用工具/库/框架/产品.环境安装.常用数据集.编程技巧 ...

  3. Python深度学习篇

    Python深度学习篇一<什么是深度学习> Excerpt 在过去的几年里,人工智能(AI)一直是媒体大肆炒作的热点话题.机器学习.深度学习 和人工智能都出现在不计其数的文章中,而这些文章 ...

  4. StatQuest学习笔记23——RNA-seq简介

    StatQuest学习笔记23--RNA-seq简介 前言--主要内容 这篇笔记是StatQuest系列笔记的第58节,主要内容是讲RNA-seq的原理.StatQuest系列教程的58到62节是协录 ...

  5. 数据结构学习笔记(七):哈希表(Hash Table)

    目录 1 哈希表的含义与结构特点 1.1 哈希(Hash)即无序 1.2 从数组看哈希表的结构特点 2 哈希函数(Hash Function)与哈希冲突(Hash Collision) 2.1 哈希函 ...

  6. 数据结构学习笔记(五):重识字符串(String)

    目录 1 字符串与数组的关系 1.1 字符串与数组的联系 1.2 字符串与数组的区别 2 实现字符串的链式存储(Java) 3 子串查找的简单实现 1 字符串与数组的关系 1.1 字符串与数组的联系 ...

  7. 数据结构学习笔记(四):重识数组(Array)

    目录 1 数组通过索引访问元素的原理 1.1 内存空间的连续性 1.2 数据类型的同一性 2 数组与链表增删查操作特性的对比 2.1 数组与链表的共性与差异 2.2 数组与链表增删查特性差异的原理 3 ...

  8. STM32 HAL库学习笔记1-HAL库简介

    STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...

  9. Kiner算法刷题记(二十一):字典树与双数组字典树(数据结构基础篇)

    字典树与双数组字典树(数据结构基础篇) 系列文章导引 系列文章导引 开源项目 本系列所有文章都将会收录到GitHub中统一收藏与管理,欢迎ISSUE和Star. GitHub传送门:Kiner算法算题 ...

  10. 明翰经验系列之学习篇(持续更新)V1.4

    文章目录 传送门 前言 综合学习 `识别有效学习与无效学习` 真的打算学这个吗? 学习需要方法论 真的要终身学习 学习很痛苦怎么办 劳逸结合 学会复盘与随时记录 `学会做减法` `学会时间管理` 知足 ...

最新文章

  1. mysql againts函数_MariaDB / MySQL TO_SECONDS和AGGREGATE函数
  2. java将日期作为文件名_获取当前时间作为文件名
  3. pthread_cleanup_push与pthread_cleanup_pop的目的 作用
  4. 【项目管理】虚拟团队
  5. Ubuntu16.04--code::blocks16.01 的代码拷贝到Windows 8.1--visual studio 2013 注意事项
  6. angularjs 路由 异步加载js
  7. 安卓Android问卷调查系统app
  8. ROS Launch使用总结
  9. 如何在twitter上看片_我在Twitter上一年学到的东西
  10. 华为服务器自检信息怎么开,hp服务器开机自检报错提示
  11. 上半年要完成的博客55
  12. 支付宝等第三方支付原理与概述
  13. pcb入门之原理图生成PCB
  14. 推荐算法之DeepCross模型
  15. GeoGebra 数列极限
  16. 学习HTML的知识点总结
  17. Oracle 数据精度错误-ORA-01438
  18. IntelliJ idea——》创建tag、删除tag
  19. Echarts可视化基础知识
  20. 计算机编码骂人,空间代码骂人的话,你看懂了多少?

热门文章

  1. 2022年华为杯中国研究生数学建模竞赛A题思路
  2. switchHosts 介绍
  3. zip分卷压缩的步骤_rar分卷压缩的步骤详解【图文步骤】
  4. [python高德]行政区查询、调用wbe服务api获取省、市、区经纬度信息
  5. python开发微信扫码支付
  6. eeglab和matlab,哪位大神会eeglab
  7. MyEclipse9.0 XJad的配置
  8. fltk和glog在mac下的安装与编译
  9. 免费英文文献下载攻略
  10. python实现3d建模工具_Python实现3D建模工具