数据结构(一)

(一)1°从逻辑结构上分:
(1)集合结构:该结构的数据元素间的关系是“属于同一个集合”。

(2)线性结构:该结构的数据元素之间存在着一对一的关系。
(3)树型结构:该结构的数据元素之间存在着一对多的关系。

(4)图形结构:该结构的数据元素之间存在着多对多的关系,也称网状结构。
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
2°从物理结构上分:(1)顺序存储结构(2)链式存储结构
(2)算法:算法是描述解决问题的方法(算法只是为了帮助大家更好的理解数据结构)
1°算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作
2°算法具有五个基本特性:输入,输出,有穷性,确定性和可行性。
输入:算法可以有0个输入和多个输入,比如在打印“hello world”就不要输入参数
输出:但是输出必须有一个输出或多个输出,否则要这个算法还有什么意义。
有穷性:指算法在执行有限的步骤之后,自动结束,而不会出现无限循环,并且每一个步骤在可接受的时间内结束。
确定性:算法的每一个步骤都有确定的含义,不会有二义性。
可行性:顾名思义,就是算法每一步都是可通过执行有限次数完成的。
(3)线性表:零个 或多个数据元素的有限序列
顺序表:指的是用一段地址连续的存储单元一次存储线性表的数据元素(内存空间连续存储)
需要三个属性
1°存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置
2°线性表的最大存储量:数组最大长度MaxSize
3°线性表的当前长度:length
#include 
#define MaxSize 20
typedef int ElemType;
typedef struct
{
    ElemType data[MaxSize];
    int length;
}SqList;
优点:1°无须为表示表中元素之间的逻辑关系而增加额外的存储空间
2°可以快速的存取表中任一位置的元素s
缺点:1°插入和删除操作需要移动大量元素
2°当线性表长度较大时,难以确定存储空间的容量
3°造成空间的“碎片”
(4)链式存储结构(链表)(不连续存储,通过指针相连接)
把存储数据元素信息的域称为数据域,把存储直接后继的域(指向下一个结点)称为指针域
指针域中存储的信息称作指针和链,这俩部分组成数据元素的存储映像,称为结点(Node)
1°单链表:n个结点链接成一个链表,即为线性表的链式存储结构,因此此链表每个结点中之包含一个指针域,所以叫做单链表
我们把链表中第一个结点的存储位置叫做头指针
有时为了方便,会在单链表的第一个结点前附设一个结点,称为头结点


发布了75 篇原创文章 · 获赞 45 · 访问量 5万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章