首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
设有带头结点的循环双链表表示的线性表L===(a1,a2,……,an-1,an)。设计在时间和空间上都尽可能高效的算法,将L改造成L=(a1,a3,……,an……a4,a2)。要求: (1)给出算法的基本设计思想。 (2)根据设计思想,采用
设有带头结点的循环双链表表示的线性表L===(a1,a2,……,an-1,an)。设计在时间和空间上都尽可能高效的算法,将L改造成L=(a1,a3,……,an……a4,a2)。要求: (1)给出算法的基本设计思想。 (2)根据设计思想,采用
admin
2013-07-12
58
问题
设有带头结点的循环双链表表示的线性表L===(a
1
,a
2
,……,a
n-1
,a
n
)。设计在时间和空间上都尽可能高效的算法,将L改造成L=(a
1
,a
3
,……,a
n
……a
4
,a
2
)。要求:
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C或C++或JAVA语言描述算法,关键之处给出注释。
(3)说明你所设计算法的时间复杂度和空间复杂度。
选项
答案
(1)算法的基本设计思想如分析所述。 (2)用C语言算法描述如下: void split(DLinkList &L){ DLinkList * p=L->next,* q,*s=NULL; L->next=L;L=>prior=L; //构造只有一个头结点的循环双链表 while(p!=L){ //扫描L的所有结点 q=p->next; p->next=L;p->prior=L->prior; //将*P结点插入到L循环双链表的末尾 L->prior->next=p;L->prior=p; p=q;q=p->next; if(S==NULL){ //s原为空表时,现只含有一个结点 s=p: s->next=s;s->prior=s; } else{ //将*P插入到s的前端 p->next=S;p->prior=s->prior; s->prior->next=p;s->prior=p; s=p; } p=q; } s->prior->next=L; //将L和S合并起来 L->prior->next=s: q=L->prior; L->prior=S->prior: S->prior=q: } (3)说明算法的复杂性:上述算法的时间复杂度为O(n),算法的空间复杂度为O(1)。
解析
用P指针扫描L的所有结点,先将L构造为只有一个带头结点的循环双链表,而用指针s构造不带头结点的循环双链表(初始时为NULL),对于奇数序号的结点*P,采用尾插法插入到L中,对于偶数序号的结点*P,采用头插法插入到s中。最后将L和s两个循环双链表连接成一个循环双链表,L为其头结点指针。
转载请注明原文地址:https://kaotiyun.com/show/2uxi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
利玛窦与李之藻合译的()一书,介绍了西方数学中的算术知识,尤为可贵的是,其传入了中国所没有的西洋笔算法。
下列不是空想社会主义产生的历史背景的是()。
新石器时代的房屋建筑根据环境的不同形成了不同的类型,()地区多为干栏式建筑。
中原地区部落联盟首领尧年老后,选舜为继承人,并传位给舜。舜年老后,传为给禹。这种职位继承制度史称()。
我国第一部系统的史学理论著作是()。
洋务运动时期,首批赴欧海军留学生派出的时间是()。
中古时代实行索贡巡行赋税征收方式的国家是()。
宋人为逃避赋役,部分人将土地假称献给了寺庙、道观等,被称为()。
1947年英国通过《蒙巴顿方案》,随后印度和巴基斯坦独立,形成印巴分治局面,在克里米尔地区冲突埋下隐患,《蒙巴顿方案》中印巴分治的依据
汉建武二十四年(公元48年)匈奴()被南边八部拥立为南单于,他袭用其祖父呼韩邪单于的称号,请求内附,得到东汉的允许。从此以后,匈奴分裂为南北二部。
随机试题
Cancerisconsideredamoderndisease,thoughitwasnotunknowninancienttimes.(TheconditionwasnamedbytheGreeksfromt
肝硬化时,人体内转氨酶变化为
一因交通事故受重伤的男子被送去医院急救,因没带押金,医生拒绝为患者办理住院手续,当患者家属拿来钱时,已错过了抢救最佳时机,患者死亡。本案例违背了患者权利的哪一点
妊娠剧吐的中医总病机是( )
保护给水水源有()方面的措施。
我国企业编制的资产负债表的基本格式属于( )。
应用实验法,教师主要是创造学习物理的实验条件和环境,使用实验法应做到哪些?
下列社会关系属于行政法调整对象的是()。
有3根钢丝,第一根的长度是第二根的,是第三根的,第二根比第三根长了384毫米,现在要把这三段钢丝截成尽可能长且相等的小段,那么这三根钢丝一共可以截成多少小段?
MINUTESOFTHEMEETINGHELDINCONFERENCEROOMNO.8
最新回复
(
0
)