练习3.2
给你一个链表L和另一个链表P,它们包含以升序排列的整数。操作PrintLots(L,P)将打印L中那些由P所指定的位置上的元素。例如,如果p=1,3,4,6,那么,L中的第1、第3、第4和第6个元素被打印出来。写出过程PrintLots(L,P)。
本文提供两种方法,第二种方法参考了网上的资料。
#include<stdio.h>
#include<stdlib.h>
typedef struct Node *PtrToNode;
typedef PtrToNode List;
typedef PtrToNode Position;
typedef int ElementType;
struct Node
{
ElementType x;
Position next;
};
void PrintLots( List L, List P )
{
Position Llots, Plots;
Llots = L->next ;
Plots = P->next ;
int index = 1;
while ( Plots != NULL )
{
while ( Llots != NULL && index != Plots->x )
{
Llots = Llots->next;
index++;
}
if ( Llots != NULL )
{
printf( "%d\t", Llots->x );
Plots = Plots->next;
}
else
return;
}
}
以