#include#include #define Maxsize 50 typedef struct Dnode{ int data; struct Dnode *prior; struct Dnode *next; }Dnode,*DList; void createListH(DList &L){ L=(Dnode *)malloc(sizeof(Dnode)); L->next=NULL; L->prior=NULL; Dnode *s; int i; scanf("%d",&i); while(i!=999){ s=(Dnode *)malloc(sizeof(Dnode)); s->data=i; s->next=L->next; if(s->next!=NULL) //´´½¨Ê±×îÖØÒªµÄ¾ÍÊÇÕâÀҪ²»È»»á³öÏÖÄÚ´æ´íÎó£¬ÒòΪµ±L->nextΪNULLµÄʱºò£¬s->next¸ù±¾ÕÒ²»µ½ s->next->prior=s; L->next=s; s->prior=L; scanf("%d",&i); } } void createListF(DList &L){ L=(Dnode *)malloc(sizeof(Dnode)); L->next=NULL; L->prior=NULL; Dnode *s; Dnode *p; p=L; int i; scanf("%d",&i); while(i!=999){ s=(Dnode *)malloc(sizeof(Dnode)); s->data=i; p->next=s; s->prior=p; s->next=NULL; p=p->next; scanf("%d",&i); } } void Insert(DList &L,int n,int e){ Dnode *s,*p; p=L; int i=0; s=(Dnode *)malloc(sizeof(Dnode)); s->data=e; while(p!=NULL&&i p=p->next; i++; } s->next=p->next; if(p->next!=NULL) p->next->prior=s; p->next=s; s->prior=p; } bool DeleteNode(DList &L,int n){ Dnode *p=L; Dnode *q; int i=0; if(n<=0) return false; while(p!=NULL&&i p=p->next; i++; } if(p==NULL) return false; q=p->next; if(q==NULL) return false; p->next=q->next; if(q->next!=NULL) p->next->prior=p; free(q); return true; } void reverse(DList &L){ //Á´±íÖеķ´×ªÒ»°ã¶¼ÊÇ¿¼Í·²å·¨ Dnode *p,*q; p=L->next; L->next=NULL; //ÕâÒ»²½×îÖØÒª£¬´´½¨Ò»¸öûÓÐÊ×½ÚµãµÄÁ´±í while(p!=NULL){ q=p->next; p->next=L->next; if(L->next!=NULL) L->next->prior=p; L->next=p; p->prior=L; p=q; } } void Traverse(DList &L){ Dnode *p; p=L->next; while(p!=NULL){ printf("%d",p->data); p=p->next; } } int main(){ DList L; createListF(L); // DeleteNode(L,2); // Traverse(L); reverse(L); Traverse(L); }```



