1.6k views
1. Let $p$ be a pointer as shown in the figure in a single linked list. What do the following assignment statements achieve?

q: = p -> next
p -> next:= q -> next
q -> next:=(q -> next) -> next
(p -> next) -> next:= q
in DS
edited | 1.6k views

Swaps the two nodes next to $p$ in the linked list.
by Veteran (420k points)
edited by
+13

1) 2) 3) Assuming p is "i" th node. It swaps "i+1" th & "i+2" th node.

How to solve this question :-> Instead of using arrows, try writing address in pointer location , as computer would store, then solving linked list questions like this becomes easy..
by Boss (41.3k points)

It is swapping the 2nd and 3rd element of a Linked List.(i.e. if we consider that p points to first node)

#include <stdio.h>
struct node{
int data;
struct node *next;
};
struct node *head = NULL;
struct node *temp;
void insert(int item){
struct node *p = (struct node*)malloc(sizeof(struct node));
p->data = item;
temp = p;
}
else{
temp->next = p;
temp = p;
}
}
void display(struct node *t){
struct node *r = t;
while(r){
printf("%d",r->data);
r = r->next;
}
}
void modify(struct node *p){
struct node *q;
q = p -> next;
p -> next= q -> next;
q -> next=(q -> next) -> next;
(p -> next) -> next= q;
}
int main(void) {
insert(1);
insert(2);
insert(3);
insert(4);
insert(5);
insert(6);
insert(7);
insert(8);
insert(9);
return 0;
}

If input is 123456789, then output will be 132456789

by Active (3k points)

The following piece of code swap 2nd and 3rd node from list. by (97 points)
swap middle two element position in linked list
by (141 points)