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

来源:互联网 发布:语音软件手机版 编辑:程序博客网 时间:2024/04/29 13:01
数据结构:软件中最核心课程

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 = 100return 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;}

一维数组
  数组名:指针变量,存放的是第一个元素的地址(指向第一个元素),其值不能被改变

0 0
原创粉丝点击