リンク リスト内の 2 つの隣接するノードのアドレスを交換しようとしています。int temp 変数を使用してそれらの値を交換しようとしましたが、完全に正常に動作します。しかし今、ポインターを介して 2 つのアドレスを交換したいと考えています。残念ながら、while ループ内に無限ループが作成されました。ここに私のコードスニペットがあります:
int の使用: //完全に問題なく動作しました
node* swapNumbers(node* head, int data){
int temp;
node *cursor = head;
while(cursor!=NULL){
if(cursor->data == data){
temp = cursor->data;
cursor->data = cursor->next->data;
cursor->next->data = temp;
//printf("1: %d\n", cursor->data);
//printf("2: %d\n", cursor->next->data);
return cursor;
}
cursor = cursor->next;
}
return NULL;
}
アドレスの使用: // これにより、無限ループが作成されました。
node* swapNumbers(node* head, int data){
node *temp = NULL;
node *cursor = head;
while(cursor!=NULL){
if(cursor->data == data){
temp = cursor;
cursor = cursor->next;
cursor->next = temp;
return cursor;
}
cursor = cursor->next;
}
return NULL;
}
私のtypedef構造体には以下が含まれています:
typedef struct node
{
int data;
struct node* next;
} node;
私は C が初めてで、ポインターはまだ私を混乱させています。どんな助けでも大歓迎です!