数据结构概述
定义:我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法。
数据结构 = 个体 + 个体的关系
算法 = 对存储数据的操作
算法
解题的方法和步骤
衡量算法的标准
1、时间复杂度
大概程序要执行的次数,而非执行的时间
2、空间复杂度
算法执行过程中大概所占用的最大内存
3、难易程度
4、健壮性
数据结构的地位
数据结构是软件中最核心的课程
程序 = 数据的存储 + 数据的操作 + 可以被计算机执行的语言
指针
指针的重要性
指针是C语言的灵魂
定义:
地址:内存单元的编号,从0开始的非负整数
指针:指针就是地址,地址就是指针
指针变量:是存放内存单元地址的变量
指针的本质是一个操作受限的非负整数
分类:
基本类型的指针
指针和数组的关系- /*
- @file main.c
- @brief 数据结构预备知识之指针与函数学习
- @author EricsT (EricsT@163.com)
- @version v1.0.0
- @date 2025-09-17
- @history 2025-09-17 EricsT - 新建文件
- */
- #include <stdio.h>
- //void f(int i)
- //{
- // i = 100;
- //}
- //
- //int main(void)
- //{
- // int i = 9;
- // f(i);
- // printf("i = %d\n", i);//此时i = 9
- //
- // return 0;
- //}
- void f(int* ptr)//ptr接收地址
- {
- *ptr = 100;//f(i)时,*ptr就相当于i
- }
- int main(void)
- {
- int i = 9;
- f(&i);
- printf("i = %d\n", i);//此时i = 100
- return 0;
- }
复制代码- /*
- @file main.c
- @brief 数据结构预备知识之指针与数组学习
- @author EricsT (EricsT@163.com)
- @version v1.0.0
- @date 2025-09-17
- @history 2025-09-17 EricsT - 新建文件
- */
- #include <stdio.h>
- int main(void)
- {
- int a[5] = { 1, 2, 3, 9, 5 };//a存放的是该数组首元素即a[0]
- //3[a]、a[3]、*(a + 3)、*(3 + a)是等价的
- printf("3[a] = %d\n", 3[a]);
- printf("a[3] = %d\n", a[3]);
- printf("*(a + 3) = %d\n", *(a + 3));
- printf("*(3 + a) = %d\n", *(3 + a));
- //数组内元素的地址是连续的
- printf("P_a = %p\n", a);
- printf("P_(a + 1) = %p\n", a + 1);
- printf("P_(a + 2) = %p\n", a + 2);
- printf("p_(a + 3) = %p\n", a + 3);
- return 0;
- }
复制代码- /*
- @file main.c
- @brief 数据结构预备知识之指针与数组与函数学习
- @author EricsT (EricsT@163.com)
- @version v1.0.0
- @date 2025-09-17
- @history 2025-09-17 EricsT - 新建文件
- */
- #include <stdio.h>
- void Show_Array(int* ptr, int iNum)
- {
- ptr[0] = -1;
- for (int i = 0; i < iNum; ++i)
- printf("%d\n", *(ptr + i));
- }
- int main(void)
- {
- int a[5] = { 1, 2, 3, 5, 4 };
- Show_Array(a, 5);
- printf("\n\n\n");
- printf("%d", a[0]);
- return 0;
- }
复制代码
来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除 |