数据结构:是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。
包括三个组成成分:数据的逻辑结构、物理结构(存储结构)、数据运算结构。
数据的逻辑结构:
1、集合(数据之间无关系)
2、线性结构(一对一)
3、树形结构(一对多)
4、图形结构(多对多)
数据的物理结构:指数据在计算机存储空间的存放形式;
顺序存储、链表存储、索引存储、散列存储
常用的数据结构:
1、数组
2、栈(先进后出、线性表)
3、队列(先进先出、后进后出、线性表)
4、链表(每个节点包括两个部分:一个存储数据元素的数据域、另一个存储下一个节点地址的指针域)
5、树
6、图
7、堆(是一种动态的树形结构)
8、散列表
而在C/C++中,我们常说的堆区、栈区则并不是数据结构中的堆、栈,而是满足数据结构中堆、栈性质的数据结构的形式。
一个程序在加载到内存中时;抽象的将编译的程序所占用的内存分为以下几个部分:
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数名,局部变量的名等。其操作方式类似于数据结构中的栈。
2、堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、静态区(static)—全局变量和局部静态变量的存储是放在一块的。程序结束后由系统释放。
4、文字常量区—常量字符串就是放在这里的,程序结束后由系统释放 。
5、程序代码区— 存放函数体的二进制代码。
网友评论