数据结构之期末考试复习顺序表链式存储

目录

概念

代码


概念

用链表来表示一个线性表,表中的元素是非连续的。

顺序存储方式在插入和删除操作上效率较低(O(n)),而链式存储方式在这些操作上效率更高(O(1));但顺序存储在随机访问、空间利用率和缓存性能方面具有优势。

在具有头结点的链式存储结构中,头指针指向链表的头结点(而非第一个元素结点),第一个元素结点由头结点的指针域指向。

带头结点的单循环链表中,任一结点的后继结点的指针域均不空。

在双向链表中,可以从当前结点出发访问到任何一个结点。

对单链表来说,只有从头结点开始才能访问到表中所有结点。

线性表L如果需要频繁地进行不同下标元素的插入、删除操作,此时选择链式存储结构更好。

线性表采用链表存储时,结点和节点内部的存储空间可以是不连续的。

在一个设有头指针和尾指针的单链表中,执行删除最后一个元素的操作需要从头遍历找到尾节点的前驱节点,因此时间复杂度为 O(n),与链表长度有关。

线性表若采用链式存储结构时,要求内存中可用存储单元的地址连续或不连续都可以。

在单链表中,要删除某一指定结点,必须先找到该结点的直接前驱。

对于线性表,在顺序存储结构和链式存储结构中查找第k个元素,其时间复杂性分别是O(1)和O(K)。

单链表又称为线性链表,在单链表上实施插入和删除操作不需移动结点,只需改变结点指针。

在单链表中,增加一个头结点的最终目的是为了方便运算。

链表不具有的特点是随机访问任一元素。

若某线性表最常用的操作是在表头进行插入和删除,则利用哪种存储方式最合适?:单链表

单链表是线性表的链式存储结构。

线性表L在什么情况下适用于使用链式结构实现?:需不断对L进行删除插入

对于一个具有N个结点的单链表,在给定值为x的结点后插入一个新结点的时间复杂度为O(N)。

数据结构反映了数据元素之间的结构关系。单链表是一种非顺序存储线性表。

循环链表的主要优点是在进行插入、删除运算时,能更好的保证链表不断开。

已知单链表A长度为m,单链表B长度为n,若将B连接在A的末尾,在没有链尾指针的情形下,算法的时间复杂度应为O(m)。

不带头节点单链表的表头插入法,为空的判断条件?:L 表示该链表,那么L==NULL 就表示空。

带头节点单链表为空的判断条件?:h->next==NULL

单链表的尾插法:首先要找到尾节点(p->next=NULL),然后p->next=newnode;p=newnode;p

->next=NULL

单链表的头插法:head 是头指针,p是要插入的节点指针,p->next=head->next;head->next=p;

已知单链表中结点* q是结点* p的直接前趋,若在* q与* p之间插入结点*s,则应执行以下(q->link=s; s->link = p; )操作。

在单链表中,指针域为next,要将q所指结点链接到p所指结点之后,其语句序列应为( q->next=p->next; p->next=q; )。

单链表的结点指针域为next,其头结点由指针head指向,则删除第一个数据结点(由指针p指向)的语句序列为(p = head->next; )。

在单链表中,删除 p 所指结点的后继结点,其语句应该为:s = p->next; p->next = s->next;

在循环双链表的p所指的结点之前插入s所指结点的操作:s->next=p;s->prior=p->prior;p->prior->next=s;p->prior=s

在双向链表中,前驱指针为prior,后继指针为next,删除p所指的结点的语句序列为:p->next->prior=p->prior; p->prior->next=p->next;

带表头附加结点的双向循环链表为空的判断条件是头指针L满足条件:L->right==L

对于一非空的不带头结点循环单链表,h和p分别指向链表的头结点、尾结点,则有:p->next==h

代码

建立链表及基本操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值