7感门 20023
数据结构作业 2002 年 第三章 栈和队列
2.37设带表头的双向循环链表表示的线性表为L=(a,a2,an) 试写一复杂度为O(n)的算法,将L改造成 L=(al, a3,..., an,...., a4, a2 L{m十a口a2- an ail ①tail=L> prior
2.37 设带表头的双向循环链表表示的线性表为L=(a1,a2,…an)。 试写一复杂度为O(n)的算法,将L改造成: L= (a1,a3,…,an,….,a4,a2) L /// a1 a2 an tail ① ① tail=L->prior
1ma口a an tail ②2用指针p访问链表的所有结点(不包括an) p=L->next while(p!=tail) p=p->next
L /// a1 a2 an tail ① ② 用指针p访问链表的所有结点(不包括an) p=L->next; while (p!=tail) { ……….. p=p->next; } p ②
Lma凵a2a3 an qp tail ③3当p访问链表的偶序号结点,删除p所指向的结点,不释放单元, p=L->next; 1=1 while (p!=tail) if(%2=0) &a=p; p=p->next; p->prior= -prior, q-prior-next-p else p=p->next +
L /// a1 a2 an tail ① ③ 当p访问链表的偶序号结点,删除p所指向的结点,不释放单元, p=L->next; i=1; while (p!=tail) { if (i%2==0) { q=p; p=p->next; p->prior=q ->prior; q ->prior->next=p; ………. } else p=p->next; i++; } p ③ a3 q
an a2 tail q ④将q所指向结点插入到tai所指向结点之后,tai指向不变。 g->next=tail->next q->prior=tail tall->next ->prior=q tail->next=q
/// a2 L a1 an tail ① p a3 q ④ 将q所指向结点插入到tail所指向结点之后, tail指向不变。 q->next=tail->next; q->prior=tail; tail->next ->prior=q; tail->next=q;