欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

新手数据结构入门理解必看!!!!!!

程序员文章站 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

链式表:

元素:由数据域,指针域组成,元素之间使用指针域连接,这种叫链式存储结构。
如果元素中只有一个指针域,且指向下一个元素,这样元素之间就只存在一对一关系,这种结构叫链式表。