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

数据结构基础【学习笔记】

2015-01-27 22:27 232 查看
数据结构:软件中最核心课程

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

个人理解:数据怎么存的问题

2. 算法:结题的方法和步骤

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

算法 = 对存储数据的操作

衡量算法的标准:

1. 时间复杂度

大概执行次数,而非执行时间(原因:不同机器执行速度不同)

2. 空间复杂度

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

3. 难易程度

4. 健壮性

其他:

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

C语言指针【C语言的灵魂】

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

指针变量:存放内存单元地址(内存单元编号)的变量

地址:内存单元的编号

指针的本质是一个操作受限的非负整数

int i = 10;
int *p = &i;  //等价于int *p;  p = &i;


通过外部函数改变局部变量的值:

# include <stdio.h>

void f(int i) {
	i = 100;
}

int main(void) {
	int i = 9;
	f(&i);
	
	printf("i = %d\n", i);  //i = 9(局部变量只在本函数内部使用)
	//Q: 如何改变 i 的值?

	return 0;
}


Q: 如何改变 i 的值?

# include <stdio.h>

void f(int * p) { //定义一个形参,名为p,类型为int *(存放int类型变量的地址)
	* p = 100;
}

int main(void) {
	int i = 9;

	f(&i);
	
	printf("i = %d\n", i);  //i = 100

	return 0;
}


指针和一维数组:

# include <stdio.h>

int main(void) {

	int a[5] = {1, 2, 3, 4, 5};

	printf("%p\n", a); //%p 输出地址(每个整型占4字节)
	printf("%p\n", a + 1);
	printf("%p\n", a + 2);
	printf("%p\n", a + 3);
	printf("%p\n", a + 4);

	return 0;
}


一维数组

数组名:指针变量,存放的是第一个元素的地址(指向第一个元素),其值不能被改变
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: