C 语言链表中的两个不相邻的节点怎么交换?

2019-12-01 23:45:19 +08:00
 kirara
不要数据交换,是直接交换节点。
给出代码,急,拜托了大佬 QAQ
1986 次点击
所在节点    程序员
12 条回复
mason961125
2019-12-01 23:47:50 +08:00
自己作业自己做。
kirara
2019-12-01 23:56:05 +08:00
@mason961125 不会
Kbyte
2019-12-02 00:03:41 +08:00
A->B->C->D->E,交换 B 和 D,就把 A 的后节点换成 D,D 的后节点换成 C,C 的后节点换成 B,B 的后节点换成 E
registerrr
2019-12-02 00:08:03 +08:00
把指向 a 节点的指针指向 b 节点,然后把 a 指针指向的节点换成 b 指针指向的节点,
同样的把指向 b 节点的指针指向 a 节点,然后把 b 指针指向的节点换成原来 a 指针指向的节点啊
registerrr
2019-12-02 00:11:36 +08:00
@registerrr 说白了就是修改节点本身的指向和其前一个节点的指向。如果是双向链表的话,该节点前后节点的指向和其本身的指向都要考虑。
Trim21
2019-12-02 00:11:57 +08:00
你总会删除节点和插入节点吧
你先把两个节点从链表上删除,然后分别在之前的节点位置上插入另一个节点
winterbells
2019-12-02 00:16:30 +08:00
修改节点指向
翻翻数据结构那本书
pocarisweat
2019-12-02 00:18:43 +08:00
你画个图,就明白了。还不明白的话,那就是对指针这个概念理解有模糊。
canyue7897
2019-12-02 06:57:58 +08:00
这个在链表里面的任何一本教材上面都会有.同楼上的,就是指向下一个的断开,然后指向需要插入的。。。其实链表需要处理的就是第一个,中间的任意一个和最后一个。
yingqi7
2019-12-02 07:15:56 +08:00
@kirara 不会就先回去理解指针,弄不懂指针这个题下一次还不会做
HarryHook
2019-12-02 11:25:30 +08:00
找到要交换的结点的 pre 结点, 然后 swap
zivyou
2019-12-02 13:47:53 +08:00
单链表的所有问题,在表头再加一个自己的头就会好解很多,你再试一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/624887

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX