反转一个双向链表中奇数位置上的数。如一个双向链表为1<->2<->3<->4<->5<->6,反转之后为5<->2<->3<->4<->1<->6。也就是把第一位,第三位,第五位反转
我说的那个123456只是一个例子,要一个对任意长度都适用的方法!(有没有只扫描一遍的方法,各种方法都欢迎,考虑到复杂度的更好啊!)
只扫描一遍不太可能。提供一个思路
两个指针,一个指向表头,一个指向表尾,同时向中间遍历,并交换奇数位上的元素,直到两个指针相遇。
和字符串反转类似,两个指针向内靠拢,对于小数据来说交换其 data 值即可(整个链表的所有指针不需要变动),当然也可以交换指针,线性时间复杂度:O(N)。