typedef struct DoubleLink{
int data;
DoubleLink *next;
DoubleLink *pre;
int length;
}Dnode;
Dnode *Create();
Dnode * Del(Dnode * H,int num);
#include <iostream>
#include <stdlib.h>
#include "DoubleLink.h"
using namespace std;
Dnode *Create()
{
Dnode *H,*p,*s;
int data,cycle = 1;
H = (Dnode*)malloc(sizeof(Dnode));
H->data = -1;
H->pre = H;
H->next = H;
H->length = 0;
p = H;
while(cycle)
{
printf("please input data:");
scanf("%d",&data);
if(data>0)
{
s = (Dnode*)malloc(sizeof(Dnode));
s->data = data;
s->next = NULL;
p->next = s;
s->pre = p;
p=s;
H->length ++;
}
else cycle = 0;
}
return H;
}
Dnode * Del(Dnode * H,int num)
{
Dnode *p ;
p = H->next;
while(num!=p->data&&p->next!=NULL)
p = p->next ;
if(num = p->data )
{
if(p->next==NULL)
{
p->pre->next = NULL;
free(p);
}
else
{
p->pre->next = p->next ;
p->next->pre = p->pre ;
free(p);
}
}
return H;
}
void main()
{
Dnode *L,*p,*q;
int num;
L = Create();
p = L->next;
for(int i=0;i<L->length;i++)
{
printf("/nLink data is:%d/n",p->data);
p = p->next;
}
scanf("%d",&num);
q=Del(L,num);
for(i=0;i<L->length;i++)
{
printf("/nLink data is:%d/n",q->next->data);
q = q->next;
}
}