数据结构学习篇(一)---大纲、简介、作用
2014-08-20 06:12
127 查看
数据结构的概述
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?
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?
#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);
}
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?
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]);
}
}
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?
#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);
}
相关文章推荐
- (郝斌讲学)数据结构学习篇(一)---大纲、简介、作用
- 考察数据结构——第一部分:数据结构简介[译]
- Android网络通信框架LiteHttp:开篇简介和教程大纲
- Windows Server 2012远程桌面服务RDS角色及作用简介
- C# 关于委托和事件的妙文:通过一个例子详细介绍委托和事件的作用;Observer模式简介
- 零基础自学用Python 3开发网络爬虫(二): 用到的数据结构简介以及爬虫Ver1.0 alpha
- 查询json的数据结构的8种方式简介
- Esper入门简介:四、 由上篇三我们实现个简单的报警作用吧
- 单片机定时器记数器的作用及使用简介
- runtime简介和作用(上代码)
- 数据结构相关代码-简介
- STL实现的底层数据结构简介
- python内置数据结构简介
- 字符设备驱动相关函数及数据结构简介 (ldd3)
- pandas库简介(1)--pandas的三种数据结构
- 数据结构-c语言版大纲
- 数据结构的作用——游戏篇
- iOS中block简介-作用域
- API各函数作用简介
- 数据结构::STL库里map和set的用法简介