2.2k 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 | 2.2k views

Swaps the two nodes next to $p$ in the linked list.
by
edited by
+17

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..

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 *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

The following piece of code swap 2nd and 3rd node from list. 