双向循环链表
定义:
typedef struct dupnode
{elemtp data;
struct dupnode *next,*prior;}
dulinklist;
dulinklist *head;
插入:有头结点
void insdulist(head,i,x)/*在双向循环链表head中的第i个结点之前插入值为x的新结点*/
dulinklist *head;
int i;
elemtp x;
{dulinklist *p,*s;
int j;
p=head;
j=0;
while((p->next!=head)&&(jnext;
j++;}
if((i>0)&&(j=i-1))
{s=malloc(sizeof(dulinklist));
s->data=x;
s->next=p->next;
s->prior=p;
p->next=s;
p->next->prior=s;
}
else printf("error\n");
}
删除:
void deledulist(head,i)
dulinklist *head;
int i;
{dulinklist *p;
int j;
p=head;
j=0;
while((p->next!=head)&&(jnext;
j++;}
if((i>0)&&(j==i))
{p->prior->next=p->next;
p->next->prior=p->prior;
free(p);}
else printf("error\n");
} |