预备知识
2016-05-09 15:19
309 查看
主要是数据结构太难了,有很多地方根本看不懂!先用郝斌的数据结构视频来入个门:
废话不多说:
开始第一课:
模块一:线性结构:
连续存储
离散存储
栈
队列
模块二:非线性结构:
树
图
模块三:查找和排序:
感觉入门是够了!
看完这些再看国嵌唐老师的数据结构视频··
我们用来描述客观事物的数据和关系以特定的方式来进行保存的操作,叫做数据结构。
在此基础上实现的一些操作称为算法–(主要是数学基础) 叫做算法
数据结构 = 个体+个体的关系
在狭义上来说算法就是对数据结构进行的操作
衡量算法的标准:
1.时间复杂度(执行的次数而不是执行的时间)–大O记法
2.空间复杂度(占的内存的大小)
3.难易程度
4.健壮性
预备知识:
伪算法+C语言实现
链表是以后数据结构的基础··
指针是C语言的灵魂。
2.定义
地址:内存单元的编号。范围为0-FFFFFFFF(4G-1)。
地址线总共有32根.就可以访问2的32次方的空间,也就是4GB。
指针:指针就是地址,地址就是指针,指针和地址是一个概念
指针变量:存放地址的变量
指针的本质是一个操作受限的非负整数。
分类:基本类型的指针
环境:vs2013
两种方式使用结构体:
struct Student St;
struct Student *St;
St->age 表示st所指向的age这个成员
注意:不能加减乘除,可以相互赋值。
结构体变量和结构体指针作为函数传参的问题
跨函数使用内存:malloc
申请了内存,要人工释放
废话不多说:
开始第一课:
模块一:线性结构:
连续存储
离散存储
栈
队列
模块二:非线性结构:
树
图
模块三:查找和排序:
感觉入门是够了!
看完这些再看国嵌唐老师的数据结构视频··
数据结构概述:
定义:我们用来描述客观事物的数据和关系以特定的方式来进行保存的操作,叫做数据结构。
在此基础上实现的一些操作称为算法–(主要是数学基础) 叫做算法
数据结构 = 个体+个体的关系
在狭义上来说算法就是对数据结构进行的操作
衡量算法的标准:
1.时间复杂度(执行的次数而不是执行的时间)–大O记法
2.空间复杂度(占的内存的大小)
3.难易程度
4.健壮性
预备知识:
伪算法+C语言实现
链表是以后数据结构的基础··
指针:
指针的重要性:是C的灵魂 定义: 地址内存单元的编号 1.指针的重要性
指针是C语言的灵魂。
2.定义
地址:内存单元的编号。范围为0-FFFFFFFF(4G-1)。
地址线总共有32根.就可以访问2的32次方的空间,也就是4GB。
指针:指针就是地址,地址就是指针,指针和地址是一个概念
指针变量:存放地址的变量
指针的本质是一个操作受限的非负整数。
分类:基本类型的指针
环境:vs2013
int main(void) { int *p ; //P是个指针变量,int* p表示只能存储int类型变量的地址。 int i = 10; int j; j = *p; //err使用了未初始化的局部变量p,p没有保存有效变量的值 system("pause"); return 0; } //p存放的地址,但是p并没有存放地址
//函数更改值 void f(int* i) { *i = 100; } int main(void) { int i = 9; f(&i); printf("%d\n",i); system("pause"); return 0; }
指针和一维数组的关系
int main(void) { int a[] = { 1, 2, 3, 4, 5 }; printf("%d\n",*(a+1));//2 system("pause"); return 0; }
结构体:
结构体是根据用户定义的复杂数据类型,不是变量,没有分配内存#include <stdio.h> struct Student { int sid; int age; }; int main(void) { struct Student st = { 20, 30 }; printf("%d\n%d\n", st.age,st.sid); //printf("%d\n%d\n", st->age, st->sid);//表达式必须包含指针类型 system("pause"); return 0; }
#include <stdio.h> struct Student { int sid; int age; }; int main(void) { struct Student st1 = { 20, 30 }; struct Student *st ;//只占4个字节,指针只占四个字节 st = &st1; printf("%d\n%d\n", st->age, st->sid);//表达式必须包含指针类型 printf("%d\n%d\n", (*st).age, (*st).sid);//表达式必须包含指针类型 system("pause"); return 0; }
void f(struct Student* s) { (*s).age = 99; s->sid = 100; } int main(void) { struct Student Sy; f(&Sy); printf("%d\n%d\n",Sy.age,Sy.sid); system("pause"); return 0; }
两种方式使用结构体:
struct Student St;
struct Student *St;
St->age 表示st所指向的age这个成员
注意:不能加减乘除,可以相互赋值。
结构体变量和结构体指针作为函数传参的问题
动态内存分配
#include <stdio.h> #include <malloc.h> //malloc分配内存,返回的是第一个字节的地址,没有实际含义,我们把(int*),把20个字节转换为int类型使用 //malloc可以用数组的方式来进行内存访问 int main(void) { int a[] = { 1, 2, 3, 4, 5, 6 }; int* p = (int*)malloc(sizeof(int) * 6); printf("%p\n",p); p[0] = 1; p[1] = 2; free(p); system("pause"); return 0; }
跨函数使用内存:malloc
申请了内存,要人工释放
相关文章推荐
- powerdesigner 字段大小写转换\id 自增
- [Qt入门篇]6 Qt的属性系统——READ/WRITE/MEMBER
- QT在linux上的发布,写给小白看的,老手略过
- 【JavaService】使用Java编写部署windows服务
- QT ini配置文件的读写(使用QTextStream类)
- 让你的树莓派说话之---espeak
- C#中从服务器中下载execl文件到本地
- Android-onInterceptTouchEvent()和onTouchEvent()总结
- Cassandra Primary Key讲解
- Android 三角标签(自定义Textview控件)
- Android账号管理机制
- 日期选择器 利用NumberPicker
- Java 标准I/O重定向
- 让你的树莓派说话之---espeak
- ABI与Instruction Set
- 关于delete的错误: angularjs $http.delete breaks on ie8
- PHP封装CURL扩展
- [Qt入门篇]5 Qt的属性系统——声明属性
- activity在锁屏时候的生命周期
- layout变化动画