首页 新闻 会员 周边

C++双向链表实现奇数位置上的反转,具体描述如下

0
悬赏园豆:5 [已解决问题] 解决于 2012-10-06 09:35

反转一个双向链表中奇数位置上的数。如一个双向链表为1<->2<->3<->4<->5<->6,反转之后为5<->2<->3<->4<->1<->6。也就是把第一位,第三位,第五位反转

问题补充:

我说的那个123456只是一个例子,要一个对任意长度都适用的方法!(有没有只扫描一遍的方法,各种方法都欢迎,考虑到复杂度的更好啊!)

@咸鱼的主页 @咸鱼 | 初学一级 | 园豆:180
提问于:2012-09-27 15:06
< >
分享
最佳答案
0

只扫描一遍不太可能。提供一个思路

两个指针,一个指向表头,一个指向表尾,同时向中间遍历,并交换奇数位上的元素,直到两个指针相遇。

收获园豆:5
翰墨小生 | 初学一级 |园豆:51 | 2012-09-27 18:33
其他回答(1)
0

和字符串反转类似,两个指针向内靠拢,对于小数据来说交换其 data 值即可(整个链表的所有指针不需要变动),当然也可以交换指针,线性时间复杂度:O(N)。

hoodlum1980 | 园豆:559 (小虾三级) | 2012-09-28 05:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册