一、数据结构与算法基础知识 从广义上讲,数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。 从狭义上讲,就是指某些著名的数据结构和算法,比如队列、栈、堆、二分查找、动态规划等。 数据结构和算法是相辅相成的,数据结构为算法服务,算法要作用在特定的数据结构之上。 "数据结构思维导图" 基础数 ...
分类:
编程语言 时间:
2019-08-01 18:52:02
阅读次数:
166
一、链表 1.什么是链表 和数组一样,链表也是一种线性表 从内存结构上看,链表的内存结构是不连续的内存空间,是将一组零散的内存块串联起来,从而进行数据存储的数据结构 链表中的每一个内存块被称为节点Node,节点除了存储数据外,还需记录链上下一个节点的地址,即后继指针next 2.常见的缓存策略 先进 ...
分类:
编程语言 时间:
2019-08-01 18:47:41
阅读次数:
119
这次的数据结构是一种特殊的线性表:栈(Stack) 栈的特点是后入先出(LIFO),可见的只有栈顶的一个元素。 栈在程序中的地位非常重要,其中最重要的应用就是函数的调用。每次函数调用时都会创建该函数的一个“活动记录”( Activation Record ,或称作“帧”( Frame ))压入运行时 ...
分类:
编程语言 时间:
2019-07-31 23:52:05
阅读次数:
167
1.概念 线性表可以看做一种抽象的概念,也可以作为一种抽象数据类型,一个线性表是某类元素的集合,还记录着元素之间的一种顺序关系。相当于一个抽象类,只做定义。 2.具体实现 1.顺序表 顺序表的基本实现方式非常简单:表中元素顺序存放在一片足够大的连续储存区间里,首元素存入储存区的开始位置,其余元素依次 ...
分类:
编程语言 时间:
2019-07-28 21:33:51
阅读次数:
144
1 #include 2 #include 3 struct student{ 4 int age; 5 }; 6 struct studnet * createStudent();//函数声明,创建学生年龄 7 void showstudent(struct studnet *);//函数声明,输... ...
分类:
编程语言 时间:
2019-07-27 18:36:28
阅读次数:
103
动态内存分配和释放: 动态构造一维数组: 假设动态构造一个Int型数组: 1.malloc只有一个int型的形参,表示要求系统分配的字节数 2.malloc函数的功能是请求系统分配len个字节的内存空间,如果请求成功,则返回第一个字节的地址,如果请求失败,则返回NULL。 3.malloc函数能且只 ...
分类:
编程语言 时间:
2019-07-27 18:29:34
阅读次数:
119
线性结构【把所有的结点用一根直线穿起来】 连续存储【数组】、离散存储【链表】(不连续的,可分隔开来) ...
分类:
编程语言 时间:
2019-07-27 18:21:50
阅读次数:
96
结构体和类的区别: 类里可以定义方法和属性,而结构体里只能有各种成员。 为什么有结构体: 为了表示一些复杂的数据类型,而普通的基本类型变量无法满足要求。 什么是结构体: 结构体是用户根据实际需要自己定义的复合数据类型。 为了不占用更多内存,使用结构体指针访问成员变量 使用结构体的两种方式: 注意事项 ...
分类:
编程语言 时间:
2019-07-27 18:17:56
阅读次数:
102
指针和数组: 指针和一维数组: 数组名: 一维数组名是个指针常量 它的值不能被改变 它存放的是一维数组里第一个元素的地址 一维数组名指向的是数组的下标为0的第一个元素。 下标和指针的关系: (一个字节就是一个地址,int类型四个字节,double八个字节,char一个字节,所有的指针变量只占用4个字 ...
分类:
编程语言 时间:
2019-07-25 23:39:01
阅读次数:
116
数据结构的定义 我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序而执行的相应操作,这个操作也叫算法) 数据结构 = 个体 + 个体的关系 算法 = 对存储数据的操作 衡量算法的标 ...
分类:
编程语言 时间:
2019-07-25 23:13:37
阅读次数:
128