给定一个单链表,编写一个函数来成对交换元素

时间:2016-04-05 15:40:11

标签: c

我必须按照以下方式交换元素:

HashMap

我的交换功能如下。

JsonObject

代码无效。 我的完整代码如下:

Eg: 1 2 3 4 5 6 7 8 //Before
    2 14 3 6 5  8 7 //After

请帮助纠正我的代码

1 个答案:

答案 0 :(得分:0)

您的代码中存在一些问题。 一个是你不断改变循环中的头部,你应该只在开始时改变它(当你遍历链表时使用另一个变量)。当你可以点击列表的末尾时,你应该有更多的支票。

尝试类似的事情(免责声明,我实际上没有尝试过):

void swap(struct node *head)
{
    struct node *odd, *even;
    if ((head == NULL) || (head->next == NULL))
        return;
    odd = head;
    even = head->next;
    head = head->next;  // change this one once and for all

    while ((odd != NULL) && (even != NULL)) {
        // swap the elements
        odd->next = even->next;
        even->next = odd;

        // move to the next ones
        odd = even->next;
        if (odd != NULL)
            even = odd->next;
    }
}