单链表基本操作之打印链表L中那些由P所指定的位置上的元素。例如P=1,3,4,6,将L
中的第1,第3,第4,第6个元素打印出来
最近在学数据结构 有一道题目是要打印链表L中那些由P所指定的位置的元素
方法 void PrintLots(List L, List P)
例如 链表P中插入元素1,3,5,7,9
我们输出
在链表L中插入元素 为了避免重复 我们从10 开始
例如 链表L插入元素 10 11 12 13 14 15 16 17 18 19 20
我们输出
现在我们打印L中的第 1 3 5 7 9位的元素
那么既然我们要打印L中的第几位上的元素,可以遍历链表P
如果链表P的第一个元素等于1 打印L的第一位
链表P的第2个元素等于2 打印L的第2位
链表P的第3个元素等于4 打印L的第4位
链表P的第4个元素等于7 打印L的第7位
我们就可以根据链表P的值来打印L的第几位
下面附上代码
struct Node;//结构体Node
typedef struct Node* PtrToNode;//定义新类型PtrToNode 类型名 指针 指向Node
typedef int ElementType;//定义新类型ElementType 相当于int
typedef PtrToNode List;//定义PtrToNode类型的List 链表
typedef PtrToNode Position;//定义PtrToNode类型的Position 位置
struct Node
{
ElementType Element;
Position Next;
};
Position First(List L)/获得链表头/
{
return L->Next;
}
void PrintLots(List L, List P)
{
int count = 1;/count 用来判断打印第几位/
Position Lpos, Ppos;
Lpos = First(L);/获得两个链表的头/
Lpos = First(P );
while (Lpos != NULL && Ppos != NULL)
{
if (Ppos->Element == count++)/如果链表P的值等于count/
{
printf("%d ", Lpos->Element);/打印链表L的值/
Ppos = Advance(Ppos);/链表P指针指向下一位/
}
Lpos = Advance(Lpos);/同样 链表L也要同步指向下一位/
}
}
第一次写哈哈哈 难免会有遗漏 见谅哈哈哈!!
`