数据结构第二章总结

第二章

线性表

什么是线性表?
具有相同数据类型的数据元素的有限序列;

顺序表
即线性表按顺序存储,每个元素逻辑上相邻,物理上也相邻,并且地址连续,常用数组存储。
存储类型可描述为:
typedef struct
{
ElementType data[ArraySize]; //存储的数据,也可用指针
int length; //数组长度
}OrderTable;

支持随机访问,时间复杂度O(1),而删除、插入则需移动大量的元素。

链表
即线性表按链式存储,与顺序表相反,逻辑相邻物理并不一定相邻,只支持顺序查找,而且删除、插入只需修改节点指针即可不需移动元素。单列表节点描述如下:
typedef struct {
ElementType data; //存数据
struct *next; //指向下一个元素
}LinkTable;

单列表可分为有头结点和无头结点两种,对于带头结点的单列表,操作时需 s = L->next,即s指向头结点下一个节点(首节点,头结点不存储元素);而不带头结点的单列表操作时只需s=L。

单列表的插入包括头插法与尾插法,所谓头插法即为新节点从头部插入(带头结点:s = L->next, L->next = s; 不带头结点:s=L;L=s;)。
尾插法即为节点从尾部插入(tail->next = s;s->next = NULL;),每次插入新节点均需找到尾结点,较头插法麻烦。

双链表
与单链表类似,仅多了一个指向前驱节点的指针域,如此做的目的是便于找前驱节点而不用再次遍历链表,结构体描述如下:
typedef struct
{
ElementType data;
struct *front,*next;
}Node;

插入、删除与单链表类似,不做赘述;

静态链表
与顺序表相似,需要分配连续存储空间,删除插入与动态链表相似;结构体描述如下:
typedef struct
{
ElementType data;//存储的数据
int next; //下一个元素的地址
}StaticTable[TableSize];

操作如 StaticTable[1].data = value; StaticTable[1].next = c; c为下一个元素地址,结构如何自行脑补

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值