我正在尝试交换链表中两个相邻节点的地址。我尝试使用 int temp 变量交换它们的值,并且效果很好。但是现在,我想通过指针交换两个地址。不幸的是,它在我的 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 新手,指针仍然让我感到困惑。任何帮助将不胜感激!