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