#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int info;
struct node *next;
}node;
node *getnode(int elem)
{
node
*p
=(node
*)malloc(sizeof(node
)); p->info=elem;
p->next=NULL;
return p;
}
void append(node **head,int elem)
{
node *temp;
if((*head)==NULL)
{
(*head)=getnode(elem);
}
else
{
temp=(*head);
while(temp->next!=NULL)
temp=temp->next;
temp->next=getnode(elem);
}
}
/**************** Displays the list ****************************/
void display(node *head)
{
while(head)
{
head=head->next;
}
}
/*************** Deletes the next node to p and returns it ******************/
node *deleteNextNode(node **p)
{
node *q;
q=(*p)->next;
(*p)->next=q->next;
return q;
}
/*********** Inserts a node q at the last node(at a head of the reversed list)*********************/
void insertLastAtFirst(node **last,node *q)
{
q->next=(*last)->next;
(*last)->next=q;
}
void func(node **head,int n)
{
node *p,*q,*last;
int i,term;
last=*head;
while(last->next!=NULL)
last=last->next;
//printf("\nLast=%d\n",last->info);
p=(*head);
if(n%2==0)
term=(n/2)-1;
else
term=n/2;
for(i=0;i<term;i++)
{
if(p->next)
{
q=deleteNextNode(&p);
p=p->next;
//printf("\nNode to be deleted %d now p pointing to %d\n",q->info,p->info);
if(q!=last)
insertLastAtFirst(&last,q);
//display(*head);
}
}
}
int main()
{
node *head=NULL;
int i,n,elem;
printf("\nEnter the number of elements\n"); printf("\nEnter the elements\n"); for(i=0;i<n;i++)
{
append(&head,elem);
}
display(head);
func(&head,n);
display(head);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CgoKdHlwZWRlZiBzdHJ1Y3Qgbm9kZQp7CiBpbnQgaW5mbzsKIHN0cnVjdCBub2RlICpuZXh0OyAgICAgICAgCn1ub2RlOwoKbm9kZSAqZ2V0bm9kZShpbnQgZWxlbSkKewogbm9kZSAqcD0obm9kZSAqKW1hbGxvYyhzaXplb2Yobm9kZSkpOwogcC0+aW5mbz1lbGVtOwogcC0+bmV4dD1OVUxMOwpyZXR1cm4gcDsKfQoKdm9pZCBhcHBlbmQobm9kZSAqKmhlYWQsaW50IGVsZW0pCnsKIG5vZGUgKnRlbXA7CiBpZigoKmhlYWQpPT1OVUxMKSAgICAgICAgICAgICAgICAgCnsKICgqaGVhZCk9Z2V0bm9kZShlbGVtKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAp9CmVsc2UKewogdGVtcD0oKmhlYWQpOwogd2hpbGUodGVtcC0+bmV4dCE9TlVMTCkKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcD10ZW1wLT5uZXh0OwogdGVtcC0+bmV4dD1nZXRub2RlKGVsZW0pOwp9Cn0KCi8qKioqKioqKioqKioqKioqIERpc3BsYXlzIHRoZSBsaXN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovCnZvaWQgZGlzcGxheShub2RlICpoZWFkKQp7CiB3aGlsZShoZWFkKSAgICAgICAgICAgICAgICAgIAogewogIHByaW50ZigiICVkICIsaGVhZC0+aW5mbyApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgaGVhZD1oZWFkLT5uZXh0OwogfQp9Ci8qKioqKioqKioqKioqKiogRGVsZXRlcyB0aGUgbmV4dCBub2RlIHRvIHAgYW5kIHJldHVybnMgaXQgKioqKioqKioqKioqKioqKioqLwpub2RlICpkZWxldGVOZXh0Tm9kZShub2RlICoqcCkKewogbm9kZSAqcTsKIHE9KCpwKS0+bmV4dDsKICgqcCktPm5leHQ9cS0+bmV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgIAogcmV0dXJuIHE7Cn0KLyoqKioqKioqKioqIEluc2VydHMgYSBub2RlIHEgYXQgdGhlIGxhc3Qgbm9kZShhdCBhIGhlYWQgb2YgdGhlIHJldmVyc2VkIGxpc3QpKioqKioqKioqKioqKioqKioqKioqLwp2b2lkIGluc2VydExhc3RBdEZpcnN0KG5vZGUgKipsYXN0LG5vZGUgKnEpCnsKIHEtPm5leHQ9KCpsYXN0KS0+bmV4dDsKICgqbGFzdCktPm5leHQ9cTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgCn0KCnZvaWQgZnVuYyhub2RlICoqaGVhZCxpbnQgbikKewogbm9kZSAqcCwqcSwqbGFzdDsKIGludCBpLHRlcm07ICAgICAgICAgIAogbGFzdD0qaGVhZDsKIHdoaWxlKGxhc3QtPm5leHQhPU5VTEwpICAgICAKICAgbGFzdD1sYXN0LT5uZXh0OwogICAvL3ByaW50ZigiXG5MYXN0PSVkXG4iLGxhc3QtPmluZm8pOwogICBwPSgqaGVhZCk7CiAgIGlmKG4lMj09MCkKICAgIHRlcm09KG4vMiktMTsKICAgIGVsc2UKICAgIHRlcm09bi8yOwogICAKICAgZm9yKGk9MDtpPHRlcm07aSsrKQogICB7CiAgICAgaWYocC0+bmV4dCkKICAgICB7CiAgICAgCiAgICAgIHE9ZGVsZXRlTmV4dE5vZGUoJnApOyAKICAgICAgcD1wLT5uZXh0OyAgICAgICAgICAKICAgICAgLy9wcmludGYoIlxuTm9kZSB0byBiZSBkZWxldGVkICVkIG5vdyBwIHBvaW50aW5nIHRvICVkXG4iLHEtPmluZm8scC0+aW5mbyk7CiAgICAgIGlmKHEhPWxhc3QpCiAgICAgICBpbnNlcnRMYXN0QXRGaXJzdCgmbGFzdCxxKTsKICAgICAgIHByaW50ZigiXG4iKTsKICAgICAgIC8vZGlzcGxheSgqaGVhZCk7CiAgICAgfQogICB9Cn0KCgppbnQgbWFpbigpCnsKIG5vZGUgKmhlYWQ9TlVMTDsKIGludCBpLG4sZWxlbTsKIHByaW50ZigiXG5FbnRlciB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzXG4iKTsKIHNjYW5mKCIlZCIsJm4pOwogcHJpbnRmKCJcbkVudGVyIHRoZSBlbGVtZW50c1xuIik7CiBmb3IoaT0wO2k8bjtpKyspCiB7CiAgIHNjYW5mKCIlZCIsJmVsZW0pOwogICBhcHBlbmQoJmhlYWQsZWxlbSk7CiB9CiAgICAgICAgIAogZGlzcGxheShoZWFkKTsKIGZ1bmMoJmhlYWQsbik7CnByaW50ZigiXG4iKTsKIGRpc3BsYXkoaGVhZCk7IAogCnJldHVybiAwOwp9Cg==