无法交换节点的值

时间:2013-02-23 22:40:37

标签: c

我正在尝试交换节点值。没有编译错误。我正在使用visual basic进行编程。如果有人能够指出我哪里出错了。将是一个很大的帮助。

另外,我可以在代码中添加什么,所以交换任何值,无论是char还是int。

#include <stdio.h>
#include <stdlib.h>


struct lnode {
    int data;
    struct lnode* next;
};

void swapNodes(struct lnode* n1, struct lnode* n2);

int main()
{
    struct lnode nodeA, nodeB;
    nodeA.data = 1;
    nodeB.data = 2;

    swapNodes(&nodeA, &nodeB);
    getchar();
    return 0;
}

void swapNodes(struct lnode* n1, struct lnode* n2)
{
    struct lnode* temp;
    temp = n1->next;
    n1->next = n2;
    n2->next = temp;
    printf("nodeA= %d  nodeB= %d",n1->data,n2->data);
}

2 个答案:

答案 0 :(得分:0)

在swapNodes()函数中,你不应该在temp旁边分配n1-&gt ;; n1-&gt; next指向任何东西。

temp = n1->next;
n1->next = n2;
n2->next = temp;

应该是

temp = n1;
n1 = n2;
n2 = temp;


lnode-&gt; next没有交换两个节点的角色。

答案 1 :(得分:0)

swapNodes函数中,您正在交换next值,看起来您打算交换数据值,如下所示:

void swapNodes(struct lnode* n1, struct lnode* n2)
{
    int temp = n1->data;
    n1->data = n2->data;
    n2->data = temp;
    printf("nodeA= %d  nodeB= %d",n1->data,n2->data);
}