(郝斌讲学)数据结构学习篇(一)---大纲、简介、作用
2014-08-13 21:02
211 查看
数据结构的概述
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.
指针就是地址,地址就是指针。
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));
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.
指针就是地址,地址就是指针。
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));
#include<stdio.h> #include<malloc.h> struct Student { int id; int age; }; struct Student *createStudent(void); void showStudent(struct Student *); int main(void) { struct Student *s; s = createStudent(); showStudent(s); return 0; } struct Student* createStudent(void) { struct Student * s = (struct Student *) malloc(sizeof(struct Student)); s->id=10000; s->age=20; return s; } void showStudent(struct Student*) { printf(“%d %d\n”,s->id, s->age); }
相关文章推荐
- 数据结构学习篇(一)---大纲、简介、作用
- (郝斌讲学)数据结构学习篇(二)---数组的操作连续存储
- (郝斌讲学)数据结构学习篇(七)---树
- (郝斌讲学)数据结构学习篇(三)---链表的CRUD操作
- (郝斌讲学)数据结构学习篇(五)---队列的CRUD操作
- (郝斌讲学)数据结构学习篇(四)---栈的CRUD操作
- (郝斌讲学)数据结构学习篇(六)---递归专题
- 《驯服烂代码——代码内在质量的改善之道》写作大纲之二:内容简介
- 郝斌 数据结构和算法分析视频下载 极力推荐
- namenode 内部关键数据结构简介
- Intent的作用和表现形式简介
- Windows Server 2012远程桌面服务RDS角色及作用简介
- [数据结构和算法]红黑树简介
- redis数据结构简介
- SpringData 作用简介
- 查询json的数据结构的8种方式简介
- commons包的作用简介
- 数据结构中的逻辑结构简介
- Java数据结构 in action——————1、简介
- Data Structures and algorithm analysis—1.3. A Brief Introduction to Recursion(数据结构—1.3 递归的简介)(之一)