Это функция, которую я написал для замены узла в односвязном списке. Есть и другие функции: добавление, удаление, длина и т. Д. c. Теперь, когда выполняется замена узлов, левый узел пропадает. например ..... связанный список 1-> 2-> 3, после перестановки он становится 1-> 3
void nodeswap()
{
struct node *p,*q,*r;
int i=1,loc,l;
l=len();
printf("At what position you want to swap nodes?\n");
scanf("%d",&loc);
if(loc>l)
{
printf("Swap not possible , no nodes beyond the location\n");
}
else
{
p=root;
while(i<loc-1)
{
p=p->link;
i++;
}
//access nodes
q=p->link;
r=q->link;
}
//swap
//p,q,r
//p,r,q
q=r->link;
r->link=q;
p->link=r;
}