版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41026740/article/details/83043294
数据结构:将数据组织在内存中的一种形式。
一、线性存储
特点:除了第一个没有前驱,最后一个没有后继,其他的结点都只有一个前驱和一个后继。
线存储分为顺序存储,链式存储。
顺序存储:在内存中连续的存储空间。如:顺序表。
链式存储:元素在内存中的位置并不连续。如:单链表,双向链表。
二、非线性存储
图:一个数据可能有n个后继,有m个前驱。
树:有一个前驱,n个后继。
二叉树:有一个前驱,两个后继。
对数据的操作有初始化,增删改查,销毁等。
扫描二维码关注公众号,回复:
3648633 查看本文章
数组:大小固定。分配在栈区或堆区。
数组名记录数组的起始位置。
顺序表:大小可以改变。分配在堆区。
1. 用elem记录起始位置。
2.size表示当前顺序表的总大小。
3.count当前顺序表中元素的个数。
顺序表特点:1.存储空间连续,并且没有浪费空间。
2.插入数据元素时,可能会存在空间的扩充。插入位置之后的元素需要后移。
3.删除数据元素时,数据元素也会挪动。
三、单链表
特点:数据存储空间不连续,每一个元素存储一个结点。 结点有数据域和指针域(下一个结点的起始地址)。
单链表带头结点初始化如下:
struct Node
{
ElemType data;
struct Node *next;
};
struct LinkList
{
struct Node head;
int count;//结点个数
};
单链表不带头结点初始化如下:
struct Node
{
ElemType data;
struct Node *next;
}Node;
struct LinkList
{
Node *head;
int count;
};
四、顺序表与链表的区别
1.顺序表存储空间连续(虚拟地址空间连续,物理存储空间不连续),链表存储空间不连续。
2.链表相比于顺序表稍微有点浪费空间(每个数据元素存储还需额外的存储指针域)。
3.链表插入或删除数据时,原始数据不需要移动,顺序表反之。
4.顺序表的访问方式简单,速度较快。