您的位置:首页 > 理论基础 > 数据结构算法

数据结构 前言

2015-09-13 22:16 357 查看
# 数据结构 前言

一直想好好学学数据结构,但一直也没怎么静下心的钻研。以前为了找工作,看了郝斌老师的数

据结构的视频,也照着视频上的

代码自己敲了一遍,一年过去了,忘记的差不多了,想抽空再好好的复习一下,结合郝斌老师的

视频和高一凡老师的《数据结构》算法实现及解析尽量多敲一点代码。废话不多说,开始正题。

1. 数据结构

什么是数据结构,数据结构是我们如何把现实中问题抽象成特定的数据类型并用某种存储结构存

储在内存中 ,在此基础上运用合适的算法解决问题。说白了,数据结构就是提供用一种能正确表

达实际问题的方法把数据存储在内存中。

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

2. 算法

算法是解决问题的方法和步骤

衡量算法的标准

a 时间复杂度

大概执行的次数

b 空间复杂度

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

c 难易程度

d 健壮性

算法 = 对存储数据的操作

3.C语言知识预备

因为郝斌老师讲数据结构课程中用的是C实现的,如果没有C语言的基础,可以看看他的[《郝斌C语言详细笔记(附源码)》](http://download.csdn.net/detail/wangjinxiang1/9103297),我学习数据结构的目的是锻炼一下自己的程序思维,并不是为了学


习C语言,所以我觉得差多了就行了,哈哈。。。

a 地址

地址就是内存单元的编号 范围是0-2的32次方(0-FFFFFFFF)

b 指针

指针保存了某个变量的地址,而指针本身其实也是一个变量,它也有自身的地址, 而指针的

内容是某个变量的地址,指针变量是存放内存单元地址的变量。

内存是有地址的,就像每个具体的地方都对应了唯一一个地址一样。通俗的讲,指针就是地址,地址就是指针。

#inclued<stdio.h>
void showArray(int *p,int len){
}
int main(void){
int a[5]={1,2,3,4,5};
showArray(a,5);  //a等价于&a[0],也就是表示a数据的第一个值得地址,&a[0]本身的类型是int *类型
return 0;
}


c 结构体

结构体是为了表示一些复杂的数据,普通的基本类型无法满足的,后面会讲到链表,当中就

能用到结构体。

结构体是一种数据类型,跟char,int等基础类型差不多,都是修饰数据类型的,不同的是

结构体是基础类型的杂交,是复合数据类型。

#include <string.h>
# include <stdio.h>
#include<windows.h> //避免一闪而过
//申明struct Student类型
struct Student
{
int sid;
char name[200];
int age;
};

int main(void)
{
struct Student st = {1000,"zhangsan",20};
printf("%d,%s,%d\n",st.sid,st.name,st.age);
st.age=25;
st.sid=100000;
strcpy(st.name,"list");
printf("%d,%s,%d\n",st.sid,st.name,st.age);
system("pause"); //避免一闪而过
return 0;
}


d 动态分配内存

动态内存分配和释放(动态分配的内存一定要手动释放,否则造成内存泄露。)

#include <stdio.h>
#include <malloc.h>
#include <windows.h>
int main(void)
{
int len;
printf("请输入您需要分配数组的个数!");
scanf("%d",&len);
int *pArr = (int*)malloc(sizeof(int)*len);

*pArr = 4;  //等同于pArr[0]=4
pArr[1]= 5;
printf("%d,%d\n",*pArr,pArr[1]);
free(pArr);
system("pause"); //避免一闪而过
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构