将一个单向链表拆分成两个链表,其中分别包括原表中的奇数和偶数个结点,并保持原相对序列不变 20
(1)所选题目涉及到的逻辑结构;
(2)程序中使用的存储结构;
(3)问题的解决方案,算法说明;
(4)对代码的评价,优缺点分析,改进方向分析等; 展开
(1)逻辑结构:
L={D,R} D={a1,a2,……,an} R={<ai, a(i+1)>|i=1,2,……,n-1}
L1=={D1,R1} D1={a1,a3,…,a(2m±1)} R1={<ai, a(i+2)>|i=1,3,…,2(m-1)±1}
L2=={D2,R2} D2={a2,a4,…,a(2m)} R1={<ai, a(i+2)>|i=1,3,…,2m-2}
(2)存储结构:
(3)算法:
a)初始化L1、L2
b)p1=L1, q1=L2, p=L->next, q=p->next
c) 循环:p1->next=p p1=p q1-next=q q1=q
若p->next=NULL 则 p1->next=NULL p=NULL
否则 p=p->next->next
若q->next=NULL 则 q1->next=NULL q=NULL
否则 q=q->next->next
当p,q同时为空时循环结束
广告 您可能关注的内容 |