新手数据结构入门理解必看!!!!!!
程序员文章站
2022-03-29 10:03:18
...
什么是数据结构:
是一门研究数据之间关系的一门学科,主要有两类需要研究的关系:
物理关系:数据在内存中的实际关系。
顺序结构:根据数据之间的相对位置确定关系。
链式结构:在数据中添加一个指针域,用于指向跟它有关系的数据。
逻辑关系:无视物理关系,人为添加一种关系。
集合:数据之间同属于一个集体,除此之外没有任务关系。
表:数据之间存在一对一关系,如:数组(顺序表),链表(链式表)。
树:数据之间存在一对多关系。
图:数据之间存在多对多关系。
我们常用说的数据结构指的是逻辑关系,而数据结构在内存的存储方式,指的是物理关系。
每种逻辑结构采用什么的物理结构存储并没有明确规定,通常以代码实现的难度、以及对时间、空间复杂度的要求,选择最合适的物理结构存储,也有可能是链式和顺序混合存储。
算法:
广义:解决特定问题的方法。
狭义:数据结构的运算。
学习数据结构的三个关键点:
1、物理结构
2、逻辑结构
3、结构的运算
数据结构常有的运算:
创建数据结构:create
销毁数据结构:destroy
清除所有元素:clear
遍历数据结构:show、print
从数据结构中删除一个元素:delete
把一个元素插入到数据结构:install
修改数据结构中的某个元素:modify
查询数据结构的中元素:query、find
访问其中一个元素:access
功能被限制的表:
栈:把表结构限制为只有一个端口进出,元素先进后出FILO。
而栈内存正是使用了这种结构管理内存,所以才叫栈内存。
bool is_pop(int* in,int* out,size_t len)
{
创建栈
for i to len
入栈 in[i]
while(out[j] == top)
出栈 j++
return is_empty;
}
队列:把一个表结构限制成有两个端口,一个端口只能进,另一个端口只能出,先进先出FIFO。
队头 0
队尾 0
队空 队头==队尾
队满 队头==(队尾+1)%cal;
出队 front = (front+1)%cal;
入队 rear = (rear+1)%cal;
队头元素 ptr[front]
队尾元素 (cal+rear-1)%cal
链式表:
元素:由数据域,指针域组成,元素之间使用指针域连接,这种叫链式存储结构。
如果元素中只有一个指针域,且指向下一个元素,这样元素之间就只存在一对一关系,这种结构叫链式表。