把一循环单链表改成双链表,还有些地方不知怎么实现,求指点
#include<iostream.h>#include<stdlib.h>
#include<malloc.h>
typedef struct DuLNode
{
int data;
struct DuLNode *prev,*next;
} DNode, *DLinkList;
void InitList_DL(DLinkList L)
{
DLinkList pre,post,head;
int i,n;
pre= (DLinkList)malloc(sizeof(DLinkList));
pre->data = 1;
pre->next = NULL;
head = pre ;
post = pre ;
cout<<"n=";
cin>>n;
for(i=2 ; i<= n; i++)
{
pre= (DLinkList )malloc(sizeof( DLinkList));
pre->data= i;
pre->next= NULL;
post->next=pre;
post = pre ;
cout<<"hsdgdada";
}
post -> next=head; /**//*将最后一个结点的指向头,这样就构成了循不链表*/
pre= head ;
}
void DLink(DLinkList L)
{
DLinkList q;
for(q=L;!q->next->prev;q=q->next)
q->next->prev=q;
}
void print_DLinkList(DLinkList L)
{
DLinkList p;
p=L->next ;
for(;p!=NULL;p=L->next)
cout<<p->data<<" " ;
}
int main()
{
DLinkList L;
InitList_DL(L);
print_DLinkList(L);
DLink(L);
print_DLinkList(L);
return 0;
}