#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *link;
}*first;
void create(int A[],int n)
{
struct node *head,*t;
int i;
first
=(struct node
*)malloc(sizeof(struct node
)); first->data=A[0];
first->link=first;
head=first;
for(i=1;i<n;i++)
{
t
=(struct node
*)malloc(sizeof(struct node
)); t->data=A[i];
t->link=head->link;
head->link=t;
head=t;
}
}
void display(struct node *p)
{
do
{
p=p->link;
}while(p!=first);
}
void insert(struct node *h,int index,int x,int length)
{
int i;struct node *t;
if(index<0||index>length)
{
return ;
}
if (index==0)
{
t
=(struct node
*)malloc(sizeof(struct node
)); t->data=x;
if(first==NULL)
{
first=t;
first->link=first;
}
else
{
while(h->link!=first)
{
h=h->link;
}
h->link=t;
t->link=first;
first=t;
}
}
else
{
for(i=0;i<index-2;i++)
{
h=h->link;
}
t
=(struct node
*)malloc(sizeof(struct node
)); t->data=x;
t->link=h->link;
h->link=t;
}
}
int del(struct node *p,int index)
{
struct node *q;
int i,x;
if(index==1)
{
while(p->link!=first)
{
p=p->link;
}
x=first->data;
if(first==p)
{
first==NULL;
}
else
{
p->link=first->link;
first=first->link;
}
}
else
{
for(i=0;i<index-2;i++)
{
p=p->link;
}
q=p->link;
x=q->data;
}
return x;
}
int main()
{
int A[]={2,3,4,5,6};
create(A,5);
// display(first);
// del(first,3);
insert(first,3,56,5);
display(first);
// display(first);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CgpzdHJ1Y3Qgbm9kZQp7CiAgICBpbnQgZGF0YTsKICAgIHN0cnVjdCBub2RlICpsaW5rOwp9KmZpcnN0OwoKdm9pZCBjcmVhdGUoaW50IEFbXSxpbnQgbikKewogIHN0cnVjdCBub2RlICpoZWFkLCp0OwppbnQgaTsKCgogICAgICBmaXJzdD0oc3RydWN0IG5vZGUgKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlICkpOwogICAgICBmaXJzdC0+ZGF0YT1BWzBdOwogICAgICBmaXJzdC0+bGluaz1maXJzdDsKICAgICAgaGVhZD1maXJzdDsKCiAgZm9yKGk9MTtpPG47aSsrKQogIHsKICAgIHQ9KHN0cnVjdCBub2RlKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlKSk7CiAgICB0LT5kYXRhPUFbaV07CiAgICB0LT5saW5rPWhlYWQtPmxpbms7CiAgICBoZWFkLT5saW5rPXQ7CiAgICBoZWFkPXQ7CgoKICB9CgoKfQp2b2lkIGRpc3BsYXkoc3RydWN0IG5vZGUgKnApCnsKICAgIGRvCiAgICB7CiAgICAgICAgcHJpbnRmKCIlZFx0XG4iLHAtPmRhdGEpOwogICAgICAgIHA9cC0+bGluazsKCiAgICB9d2hpbGUocCE9Zmlyc3QpOwoKCn0Kdm9pZCBpbnNlcnQoc3RydWN0IG5vZGUgKmgsaW50IGluZGV4LGludCB4LGludCBsZW5ndGgpCnsKaW50IGk7c3RydWN0IG5vZGUgKnQ7CiAgICBpZihpbmRleDwwfHxpbmRleD5sZW5ndGgpCiAgICB7CiAgICAgICAgcmV0dXJuIDsKCiAgICB9CiAgICBpZiAoaW5kZXg9PTApCiAgICB7CiAgICAgICAgdD0oc3RydWN0IG5vZGUgKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlKSk7CiAgICAgICAgdC0+ZGF0YT14OwogICAgICAgIGlmKGZpcnN0PT1OVUxMKQogICAgICAgIHsKICAgICAgICAgICAgZmlyc3Q9dDsKICAgICAgICAgICAgZmlyc3QtPmxpbms9Zmlyc3Q7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIHdoaWxlKGgtPmxpbmshPWZpcnN0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBoPWgtPmxpbms7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaC0+bGluaz10OwogICAgICAgICAgICB0LT5saW5rPWZpcnN0OwogICAgICAgICAgICBmaXJzdD10OwoKICAgICAgICB9CgogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGZvcihpPTA7aTxpbmRleC0yO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGg9aC0+bGluazsKCiAgICAgICAgfQogICAgICAgIHQ9KHN0cnVjdCBub2RlICopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSApKTsKICAgICAgICB0LT5kYXRhPXg7CiAgICAgICAgdC0+bGluaz1oLT5saW5rOwogICAgICAgIGgtPmxpbms9dDsKCiAgICB9Cn0KCmludCBkZWwoc3RydWN0IG5vZGUgKnAsaW50IGluZGV4KQp7CiAgICBzdHJ1Y3Qgbm9kZSAqcTsKICAgIGludCBpLHg7CiAgICBpZihpbmRleD09MSkKICAgIHsKCgogICAgd2hpbGUocC0+bGluayE9Zmlyc3QpCiAgICAgICAgICB7CgoKICAgICAgICBwPXAtPmxpbms7CiAgICAgICAgICB9CiAgICB4PWZpcnN0LT5kYXRhOwogICAgaWYoZmlyc3Q9PXApCiAgICB7CiAgICAgICAgZnJlZShmaXJzdCk7CiAgICAgICAgZmlyc3Q9PU5VTEw7CgogICAgfQogICAgZWxzZQogICAgewogICAgcC0+bGluaz1maXJzdC0+bGluazsKICAgIGZyZWUoZmlyc3QpOwogICAgZmlyc3Q9Zmlyc3QtPmxpbms7CgogICAgfQp9CmVsc2UKewogICAgZm9yKGk9MDtpPGluZGV4LTI7aSsrKQogICAgewogICAgICAgIHA9cC0+bGluazsKICAgIH0KICAgIHE9cC0+bGluazsKICAgIHg9cS0+ZGF0YTsKICAgIGZyZWUocSk7Cgp9CnJldHVybiB4Owp9CgppbnQgbWFpbigpCnsKaW50IEFbXT17MiwzLDQsNSw2fTsKICAgIGNyZWF0ZShBLDUpOwogICAvLyBkaXNwbGF5KGZpcnN0KTsKICAgLy8gZGVsKGZpcnN0LDMpOwogICBpbnNlcnQoZmlyc3QsMyw1Niw1KTsKCiAgICBkaXNwbGF5KGZpcnN0KTsKCgogICAvLyBkaXNwbGF5KGZpcnN0KTsKICAgIHJldHVybiAwOwp9Cg==