我的节点有一个整数值。我希望我的程序使用这样的值交换两个节点:
void reemplazarNodosConValores(int a,int b) {
node *antecedenteDelPrimero = antecedentePorValor(a);
node *antecedenteDelSegundo = antecedentePorValor(b);
node *primero = nodoPorValor(a);
node *segundo = nodoPorValor(b);
node *nextDelPrimero = siguienteNodo(primero);
node *nextDelSegundo = siguienteNodo(segundo);
antecedenteDelSegundo->next = primero;
primero->next = nextDelSegundo;
antecedenteDelPrimero->next = segundo;
segundo->next = nextDelPrimero;
}
如您所见,我创建了六个变量。两个节点。每个节点之前的节点。以及每个节点之后的节点。
然后,我进行交换。
但是,当我尝试打印节点时,交换似乎会产生无限循环。
我的交换基于这个答案:https ://stackoverflow.com/a/1536011/555690
编辑:其他功能,根据要求:
node *antecedentePorValor(int x) {
node *resultado = NULL;
for (int i = 0; i < counter; ++i) {
resultado = siguienteNodo(resultado);
if (siguienteNodo(resultado)) {
if (siguienteNodo(resultado)->data == x) {
break;
}
}
}
return resultado;
}
node *nodoPorValor(int x) {
node *resultado = head;
for (int i = 1; i < counter; ++i) {
if (resultado->data == x) {
break;
}
resultado = resultado->next;
}
return resultado;
}
node *siguienteNodo(node *nodo) {
node *resultado;
if (nodo) {
resultado = nodo->next;
}else{
resultado = head;
}
return resultado;
}