0

我正在尝试交换节点值。没有编译错误。我正在使用 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);
}
4

2 回答 2

0

在 swapNodes() 函数中,您不应将 n1->next 分配给 temp;n1->next 不指向任何内容。

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

应该

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


lnode->next 对交换两个节点没有任何作用。

于 2013-02-23T22:45:51.680 回答
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);
}
于 2013-02-23T22:48:12.557 回答