0

ノード値を交換しようとしています。コンパイル エラーはありません。プログラミングにビジュアルベーシックを使用しています。誰かが私が間違っているところを指摘できれば。大きな助けになります。

また、コードに何を追加できるので、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 には、2 つのノードを交換する役割はありません。

于 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 に答える