概念
数据结构是这数据元素的集合(或数据对象)及元素间的相互关系和构造方法。元素间的相互关系是数据的逻辑结构,数据元素及元素之间关系的存储形式成为存储结构。学习数据结构能够帮助为应用所设计的数据选择适当的逻辑结构,存储结构及其相应的操作方法。从而提高计算机解决问题的效率。
研究重点
1数据的逻辑结构及各类型的存储。
2对数据的操作:查找,排序
知识概览
(点我查看大图)
纵横比较
1 数据按逻辑结构分为线 树图,三者的区别在哪里?
线
一个父辈一个子辈
树
一个父辈 n个子辈(n=1,2,3..)
图
m个父辈n个子辈(n,m=1,2,3..)
概括的说,线和树都是一种特殊的图。
2数据按存储方式分,有顺序存储和链式存储,两者的区别在哪里?
顺序存储,是用一组地址连续的存储单元存储。就好比5个人去教室,坐挨着的一排座位。(假设现在老大做1号,老二坐2号。)一旦有人要插入到老大和老二之间时,只能是从老二到老五依次往后挪一个位置。因为顺序存储和实际的地址有关。
链式存储,不要求地址连续。用结点来存储。包括数据域和指针域。数据域存放元素,指针存放和他相连的下一个地址。如果同样是新人插到老大和老二之间,那么新人可以随便坐,只需要改变老大和新人的指针就行,其他人也不受影响。
3 当栈和队列都采用顺序存储时,区别是什么?
首先相同点都是用连续的地址去存储。不同点是:
顺序栈通常用一个一维数组和一个记录栈顶位置的变量来实现栈的顺序存储。常用的是进栈和出栈操作,在进栈之前应判断是否栈满。
顺序队列:有三个域,data,front,rear.
入队列操作用两条赋值语句。SQ.front=SQ.front+1;SQ.data[SQ.rear]=x完成。
4 当栈,队列,二叉树都采用链式存储时,有什么联系和区别?
首先共同点都是依靠指针。
链栈:(方式之一)用带头结点的单链表来实现。假设LS指向链表的头结点,首结点是栈顶结点,LS->next 指向栈顶结点。
链队列:用带头结点的单链表来实现。头指针指向链表的头结点,单链表的头结点的next域执行队列首结点。
没错,上面两句话表达的是一个意思。。。只不过由于二叉树一般会有两个子结点,所以在存储上也有一些差异。
二叉树:仅拿二叉链表举例,在二叉链表中,会有存放数据的,和存放指向左右孩子的指针域。
总结
用计算机解决任何实际问题都离不开数据表示和数据处理,而数据的表示和处理的核心问题之一就是数据结构及其实现。这正是我们数据结构这一部分要研究的基本内容。当然,它也为我们数据库及其应用,操作系统等课程提供必要的知识基础。同时,也要意识到因为很多算法是受存储方式局限的。所有更应该考虑优先选好到底用什么样的数据存储。这一部分内容框架很清晰,但是知识点还要好好的总结。
学习还在继续。总结不断更新中。欢迎批评与指正。