单链表基本操作之打印链表L中那些由P所指定的位置上的元素。

单链表基本操作之打印链表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
我们输出 打印链表P
在链表L中插入元素 为了避免重复 我们从10 开始
例如 链表L插入元素 10 11 12 13 14 15 16 17 18 19 20
我们输出
链表L
现在我们打印L中的第 1 3 5 7 9位的元素
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也要同步指向下一位/
}
}
第一次写哈哈哈 难免会有遗漏 见谅哈哈哈!!

`

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值