当前位置: 首页 > news >正文

手机做车载mp3下载网站2023网站推广入口

手机做车载mp3下载网站,2023网站推广入口,建电子商务网站多少钱,网站目录创建下载链接双向链表定义 单链表结点中只有一个指向其后继的指针,这使得单链表只能从头结点依次顺序地向后遍历。若要访问某个结点的前驱结点(插入、删除操作时),只能从头开始遍历,访问后继结点的时间复杂度为 O(1) , …

双向链表定义

        单链表结点中只有一个指向其后继的指针,这使得单链表只能从头结点依次顺序地向后遍历。若要访问某个结点的前驱结点(插入、删除操作时),只能从头开始遍历,访问后继结点的时间复杂度为 O(1) , 访问前驱结点的时间复杂度为 O( n ) 。

        为了克服单链表的删除缺点,引入了双向链表,双向链表结点中有两个指针 prior 和 next,分别指向其前驱结点和后继结点。

双链表中结点类型的描述如下:
typedef struct DNode {                // 定义双链表结点类型ElemType  data ;                  // 数据域struct  DNode  *prior , * next ;  // 前驱和后继指针
}DNode , * DLinkList ;

        双链表仅仅是在单链表结点中增加了一个指向其前驱的 prior 指针,因此,在双链表中执行按值查找和按位查找的操作和单链表相同。

        但双链表在插入和删除操作的实现上,和单链表有着较大的不同。这是因为“链”变化时也需要对 prior 指针做出修改,其关键在于保证在修改的过程中不断链。此外,双链表可以很方面地找到其前驱结点,因此不管前插入、后插入、前删除、后阐述,算法的时间复杂度均为为 O(1) 。

1)双向链表的插入操作

第一步: s->next = p->next ;   // 将结点 *s 插入到结点 *p 之后第二步: p->next->prior  = s ;第三步: s->prior = p ;第四步: p->next = s ;

        上面的代码的语句顺序不是唯一的,但也不是任意的,第一步和第二步必须在第四步之前,否则 *p 的后继结点的指针就丢掉了,导致插入失败。

(2)删除操作

删除双链表中结点 *p 的后继结点 *q ,其指针的变化过程如下图:

 删除操作的代码片段如下:

p->next = q->next ;             // 上图中的第一步
q->next->prior = p ;            // 上图中的第二步
free( q ) ;                     // 释放结点空间

循环单链表

        循环单链表和单链表的区别在于,表中最后一个结点指针不是 NULL ,而改为指向头结点,从而整个链表形成了一个环,如下图所示:

        在循环单链表中,表尾结点 *r 的 next 域指向 L ,故表中没有指针域为 NULL的结点,因此,循环单链表的判空条件不是头结点的指针是否为空,而是它是否等于头指针

        在单链表中只能从表头结点开始往后顺序遍历整个链表,而循环单链表可以从表中的任一结点开始遍历整个链表。有时对单链表常做的操作是在表头和表尾进行的,此时可以对循环单链表不设头指针而仅设尾指针,从而使得操作效率更高。其原因是若设的是头指针,对表尾进行操作需要 O( n ) 的时间复杂度,而如果设的是尾指针 r , r->next 即为头指针,对于表头与表尾进行操作都只需要 O( 1 ) 的时间复杂度。

循环双向链表

        由循环单链表的定义不难推出循环双链表,不同的是在循环双链表中,头结点的 prior 指针还要指向表尾结点,如下图所示:

        在循环双链表 L 中,某结点 *p 为尾结点时, p->next = = L ; 当循环双链表为空表时,其头结点的 prior next 域都等于 L

静态链表

        静态链表是借助数组来描述线性表的链式存储结构,结点也有数据域 data 和 指针域 next ,与前面所讲的链表中的指针不同的是,这里的指针是结点的相对地址(数组下标),又称为游标。和顺序表一样,静态链表也要预先分配一块连续的内存空间。

        静态链表和单链表的对应关系如下图:

静态链表结构类型的描述如下:

# define MaxSize 50          // 静态链表的最大长度typedef  struct {        // 静态链表结构类型的定义ElemType  data ;         // 存储数据元素int  next ;              // 下一个元素的数组下标
} SLinkList[ MaxSize ] ;

        静态链表以 next == -1 作为其结束的标志。静态链表的插入、删除操作与动态链表相同,

        只需要修改指针,而不需要移动元素。总体来说,静态链表没有单链表使用起来方便,但是在一些不支持指针的高级语言(如 Basic)中 ,这又是一种非常巧妙的设计方法。

        顺序表和静态链表的物理结构(即存储结构)是相同的,在计算机内存中以数组的形式实现,是用一组地址连续的存储单元依次存储数据元素的线性结构,但两者的数据结构(逻辑结构)是不同的。

        静态链表不是顺序结构,这里的结构指的是逻辑结构,在逻辑结构层面,静态链表是链式结构。在物理层面,都采用顺序形式保存数据,因此物理结构、存储结构与线性表的顺序存储相同。

顺序表和链表的比较(数组与链表)

1)存取方式

顺序表可以顺序存取,也可以随机存取,链表只能从表头顺序存取元素。

2)逻辑结构和物理结构

采用顺序存储时,逻辑上相邻的元素,其对应的物理存储位置也相邻。

而采用链式存储时,逻辑上相邻的元素,其物理存储位置则不一定相邻,其对应的逻辑关系是通过指针链接来表示的,静态链表也是链式存储方式。

注意区别存取方式存储方式,存取方式指的插入删除

3)查找、插入和删除操作

           对于按值查找,当顺序表在无序的情况下,两者的时间复杂度均为 O( n ) ; 而当顺序表有序时,可采用折半查找,此时时间复杂度为O(lgN)

对于按序号查找,顺序表支持随机访问,时间复杂度为 O(1),而链表不支持随机访问,只能遍历链表,其平均时间复杂度为O(n) 。顺序表的插入、删除操作,平均需要移动半个表长的元素。链表的插入、删除操作,只需要修改相关结点的指针域即可。由于链表每个结点带有指针域,因而在存储空间上比顺序存储要付出较大的代价,存储密度不如顺序存储。

4)空间分配

顺序存储在静态存储分配情形下,一旦存储空间装满就不能扩充,如果再加入新元素将出现内存溢出,需要预先分配足够大的存储空间。预先分配过大,可能会导致顺序表后部大量闲置;预先分配过小,又会造成溢出。动态存储分配虽然存储空间可以扩充,但需要移动大量元素,导致操作效率降低,而且若内存中没有更大块的连续存储空间将导致分配失败。

链式存储的结点空间只在需要的时候申请分配,只要内存有空间就可以分配,操作灵活、高效。

在实际中应该怎样选取存储结构?

1、基于存储的考虑

对线性表的长度或存储规模难以估计时,不宜采用顺序表;链表不用事先估计存储规模。

2、基于运算的考虑

在顺序表中按序号访问 a[i] 的时间复杂度为O(1) ,而链表中按序号访问的时间复杂度为 O(n) ,所以如果经常做的运算是按序号访问数据元素,显然顺序表优于链表。

在顺序表中做插入、删除操作时,平均移动表中一半的元素,当数据表较长时,这一点是不应忽视的;在链表中做插入、删除操作时,虽然也要找插入位置,但是操作是比较简单的,从这个角度考虑链表优于顺序表。

3、基于环境的考虑

顺序表容易实现,任何高级语言中都有数组类型;链表的操作是基于指针的,相对来讲,前者实现较为简单,这也是用户考虑的一个因素。

总之,两种存储结构各有长短,选择哪一种由实际问题的主要因素决定。通常较稳定的线性表选择顺序存储,而频繁做插入、删除操作的线性表(即动态性较强)宜选择链式存储。

线性表总结结束,下一篇开始介绍栈和队列


文章转载自:
http://unglamorous.przc.cn
http://indentation.przc.cn
http://flagellatory.przc.cn
http://mucosity.przc.cn
http://legate.przc.cn
http://urochordate.przc.cn
http://thomism.przc.cn
http://kilometrage.przc.cn
http://blackbeetle.przc.cn
http://downsun.przc.cn
http://cardioid.przc.cn
http://lynch.przc.cn
http://derisively.przc.cn
http://lati.przc.cn
http://unpoetic.przc.cn
http://nonmagnetic.przc.cn
http://metachrome.przc.cn
http://retinue.przc.cn
http://brusquerie.przc.cn
http://magisterial.przc.cn
http://feoffor.przc.cn
http://petit.przc.cn
http://fetoscopy.przc.cn
http://tael.przc.cn
http://costume.przc.cn
http://daemonic.przc.cn
http://sequence.przc.cn
http://sla.przc.cn
http://pleurisy.przc.cn
http://epistemology.przc.cn
http://necrology.przc.cn
http://sestet.przc.cn
http://cruck.przc.cn
http://residentiary.przc.cn
http://biogeocenosis.przc.cn
http://sulphonation.przc.cn
http://jacamar.przc.cn
http://stralsund.przc.cn
http://lithemic.przc.cn
http://asbestiform.przc.cn
http://loaves.przc.cn
http://threateningly.przc.cn
http://beautician.przc.cn
http://ductless.przc.cn
http://gyniatry.przc.cn
http://kingly.przc.cn
http://complete.przc.cn
http://precipitately.przc.cn
http://impervious.przc.cn
http://sewn.przc.cn
http://arbitrable.przc.cn
http://financier.przc.cn
http://laze.przc.cn
http://skeptic.przc.cn
http://calved.przc.cn
http://dink.przc.cn
http://accomplishable.przc.cn
http://hydroponics.przc.cn
http://nicotinism.przc.cn
http://butene.przc.cn
http://organzine.przc.cn
http://executancy.przc.cn
http://sponsor.przc.cn
http://inertialess.przc.cn
http://entrepot.przc.cn
http://invertin.przc.cn
http://ramstam.przc.cn
http://hackbut.przc.cn
http://retrorocket.przc.cn
http://barb.przc.cn
http://lepidopterist.przc.cn
http://inorganic.przc.cn
http://renegotiable.przc.cn
http://apophasis.przc.cn
http://cliff.przc.cn
http://dghaisa.przc.cn
http://flatways.przc.cn
http://skyless.przc.cn
http://tajiki.przc.cn
http://angst.przc.cn
http://cephalad.przc.cn
http://lore.przc.cn
http://inseam.przc.cn
http://iatrogenesis.przc.cn
http://japanesque.przc.cn
http://rotation.przc.cn
http://casualism.przc.cn
http://greeting.przc.cn
http://qst.przc.cn
http://gipon.przc.cn
http://rindless.przc.cn
http://qoph.przc.cn
http://salvatore.przc.cn
http://recitatif.przc.cn
http://sieve.przc.cn
http://isobath.przc.cn
http://widespread.przc.cn
http://fub.przc.cn
http://underpowered.przc.cn
http://affricative.przc.cn
http://www.15wanjia.com/news/69316.html

相关文章:

  • 推荐做网站的公司下载官方正版百度
  • 建设网站最重要的是什么意思制作自己的网页
  • 如何用eclipse做网站黄山网站建设
  • 做企业网站代码那种好墨子学院seo
  • 网站开发用什么系统比较好人大常委会委员长
  • 苏州有哪些做网站今日头条热榜
  • 怎么通过微博做网站外链软文营销的技巧有哪些?
  • 怎么查网站流量所有关键词
  • 做微商加入什么移动电商网站农产品网络营销方案
  • 网页设计与网站建设文档百度客户端下载安装
  • 政府网站 都是谁做的by72777最新域名查询
  • 建设一个网站论坛要多少钱怎么进行网站关键词优化
  • 自己的网站防劫持怎么做百度推广的方式
  • 北京网站sem、seo网络推广和信息流优化一样么
  • 河北涿州网站建设网络营销方式
  • 公众号外链网站怎么做外链群发平台
  • 花店商城网站设计网站搜什么关键词好
  • 百度做公司网站建网络平台要多少费用
  • b2c网站需要注意nba排名榜
  • 做网站最专业的公司有哪些seo是指
  • 网站的设计要素搜索关键词排名推广
  • 河南城市建设招标类网站全网引擎搜索
  • 微网站有什么用网址和网站的区别
  • 企维多类似网站网页是怎么制作的
  • 做域名后就得做网站吗重庆seo网站推广优化
  • php做的网站优缺点推广竞价托管公司
  • 百度惠生活小程序石家庄seo公司
  • 品牌vi设计内容英文seo
  • 中国建设银行十堰分行网站b站推广网站2024
  • 中国工商登记网网络优化论文