可以解释一下这个吗?
设A、B是两个升序的循环链表,Pa、Pb分别指向两个表的表头节点,试写出一个将这两个表归并为一个有序的循环列表。
FUN LinkList (VAR Pa,Pb:link): Link
BEGIN
PTRa <- Pa↑.Next;
PTRb <- Pb↑.Next;
New(s);
Pc <- S;
PTRc <- Pc;
WHILE PTRa≠Pa AND PTRb≠Pb DO [
IF PTRa↑.Data < PTRb↑.Data THEN [
New(S);
S↑.Data <- PTRa↑.Data;
PTRc↑.Next <- S;
PTRc <- S;
PTRa <- PTRa↑.Next;
]
ELSE IF PTRa↑.Data > PTRb↑.Data THEN [
New(S);
S↑.Data <- PTRb↑.Data;
PTRc↑.Next <- S;
PTRc <- S;
PTRb <- PTRb↑.Next;
]
ELSE [
New(S);
S↑.Data <- PTRb↑.Data;
PTRc↑.Next <- S;
PTRc <- S;
PTRa <- PTRa↑.Next;
PTRb <- PTRb↑.Next;
]
]
IF PTRa=Pa THEN DO [
WHILE PTRb≠Pb DO [
New(S);
S↑.Data <- PTRb↑.Data;
PTRc↑.Next <- S;
PTRc <- S;
PTRb <- PTRb↑.Next;
]
]
ELSE IF PTRb=Pb THEN DO [
WHILE PTRa≠Pa DO [
New(S);
S↑.Data <- PTRa↑.Data;
PTRc↑.Next <- S;
PTRc <- S;
PTRa <- PTRa↑.Next;
]
]
PTRc↑.Next <- Pc;
RETURN Pc