#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct node)
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next,*prior;
}dlinklist;
dlinklist *head;
//双向链表的前插运算 在结点p之前
dlinklist *dinsert_before(dlinklist *head,dlinklist *p,int x)
{
dlinklist *s;
s=(struct node*)malloc(LEN);
s->data=x;
s->next=p;
s->prior=p->prior;
p->prior->next=s;
p->prior=s;
return(head);
}
//双向链表的后插运算 假设双链表的结点p的后继结点为q,在结点p之后插入一个新结点s
dlinklist *dinsert_after(dlinklist *head,dlinklist *p,int x)
{
dlinklist *s;
s=(struct node*)malloc(LEN);
s->data=x;
s->next=p->next;
p->next->prior=s;
s->prior=p;
p->next=s;
}
//双向链表的自身删除运算
dlinklist *delete_nodep(dlinklist *head,dlinklist *p)//删除p结点
{
if(p!=0)
{
p->prior->next=p->next;
p->next->prior=p->prior;
free(p);
return (head);
}
else return 0;
}
双向链表的插入删除运算
最新推荐文章于 2022-09-25 13:47:37 发布