问答题 已知L为链表的头结点地址,表中共有m(m>3)个结点,从表中第i个结点(1<i<m)起到第m个结点构成一个循环部分链表,设计将这部分循环链表中所有结点顺序完全倒置的算法。【东北大学1998三(15分)】
【正确答案】正确答案:查第i个结点,记下第i个结点的指针。然后从第i+1个结点起,直至第m(11),j初值为1,P初始指向第二个结点 (j++;pre=p;p=p一>next;) //查找结束,pre指向第i一1个结点,P指向第i个结点 q=p; //暂存第i个结点的指针 p=p一>next; //p指向第i+1个结点,准备逆置 j+=2; //上面while循环结束时,j=i一1,现从第i+1个结点开始逆置 while(j<=m) //逆置 {r=p一>next;P一>next=pre一>next;pre一>next=p ; p=r;j++;} q一>next:pre一>next; //将原第i个结点的后继指针指向原第m个结点
【答案解析】