线性表

线性表


线性表的基本操作:

InitList(&L)初始化,构造一个空的线性表。

ListLength(L)求长度,返回线性表中数据元素个数

GetElem(L,i,&e)取表L中第i个数据元素赋值给e

LocateElem(L,e)按值查找,若表中存在一个或多个值为e的结点,返回第一个找到的数据元素的位序,否则返回一个特殊值

ListInsert(&L,i,e)在L中第i个位置前插入心的数据元素e,表长加1

ListDelete(&L,i,e)删除表中第i个数据元素,e返回其值,表长减1


顺序表

 


链表


单链表

定义:

特点:在内存中用一组任意的存储单元来存储线性表的数据元素,用每个数据元素所带的指针来确定其后继元素的存储位置。这两部分信息组成数据元素的存储映像,称为结点。

结点:数据域+指针域(链域)

带头结点的单链表:由于开始结点的位置被存放在头结点的指针域中,所以对链表第一个位置的操作同其他位置一样,无需特殊处理。无论链表是否为空,其头指针是指向头结点的非空指针,因此对空表和非空表的处理也就统一了,简化单链表操作的实现。

操作:

创建链表:

查询:

插入:先连后断

删除:

合并:

逆序:


循环链表

循环链表的最后一个结点的next的指针不为null,而是指向了表头结点。在循环链表中没有null为简化操作,在循环链表中往往加入表头节点。

特点:循环链表中,从任一结点出发都可访问到表中所有结点。而单链表中,只能从头指针开始,否则无法访问到该结点之前的其他结点。


双向链表

在前驱和后继方向都能便利的线性链表。

插入算法(先连后断):

P->prior=current;
p->next=current->next;
current-next=p;
p->next->prior=p;

删除算法:

current->next->prior=current->prior;
current->prior->next=current->next;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值