1.1.2数据结构
数据结构包括逻辑结构逻辑关系和存储结构数据存储
数据结构包含两种内容:数据元素的集合与各数据元素间的前后件关系
数据处理包括插入,删除,查找,更改等。
线性结构和非线性结构
线性结构:若一个非空的数据结构有且只有一个根节点,每个节点最多只有一个直接前驱(前件)和一个直接后继(后件)
1.1.3线性表
非空线性表:有且只有一个根节点
有且只有一个终端节点
其他节点有且只有一个前件,也有且只有一个后件
线性表结点数称为线性表的长度,当结点数为零时,称为空表
存储结构为顺序结构和链式结构
顺序结构:线性表所有元素所占储存空间为连续的
存储空间按逻辑顺序依次存放
Eg:
设元素集合D={1,2,3,4,5,6}
B={D,R}为线性结构所对应的R为
R={(6,2),(5,6),(1,3),(2,4),(3,2)}
两个根节点一定是非线性结构
线性结构一定连续
连续的不一定是线性结构
线性表的顺序结构中,存储空间连续,每个元素所占字节数相同,元素的存储结构与逻辑顺序一致
1.1.4栈和队列易考点
栈是一种运算受限的线性表,
栈是限定在一端插入与删除的线性表
允许插入和删除的一端称为栈顶
不允许插入与删除的一端称为栈底
插入与删除只允许在栈顶进行,栈又称为“先进后出”或“后进先出”表
栈的基本运算分为:入栈运算,出栈运算,读栈顶元素
栈的顺序存储空间S中,S(bottom)为栈底元素,S(top)为栈顶元素
Top=0表示栈空
Top=m,表示栈满
队列一种特殊的线性表,只允许在队头删除,队后插入,又称先进先出表
队列的顺序存储结构一般采用循环结构
当尾指针等于头指针时,可能是队列满或队列空
删除元素队头加一
插入元素队尾加一
元素个数=r-f(rf)
个数=m-f+r(rf)
先进先出
在栈中,栈顶指针不变,栈中元素随栈顶指针的变化而变化
循环队列中元素的个数有队头指针和队尾指针共同决定
队头指针可以大于队尾指针,也可以小于队尾指针
1.1.5线性链表
线性表的链式存储结构称为线性链表
每个节点只有一个指针域,又称单链表
链式存储结构既可以表示线型结构,也可以表示非线型结构
1.1.6树和二叉树
树是一种简单的非线性结构
树的节点数等于所有结点的度之和加一
每个节点只有一个前件,称父节点
没有前件的节点只有一个,称根节点
每个节点可以有多个后件,称为该节点的子节点
没有后件的节点称为叶子节点
一个节点所拥有后件的个数称为度B的度为2
树的最大层数称为树的深度上图树的深度为4
叶子节点没有子树