当前位置:首页 > 单链表转换成双向循环链表
#include
typedef struct linklist List;
void One_To_Double(List *head); void main() { int i=1,sum; List *head,*q,*p; head=(List *)malloc(sizeof(List)); head->pre=NULL; printf(\输入链表的长度:\ scanf(\ p=(List *)malloc(sizeof(List)); p->data=i; head->next=p; p->next=NULL; p->pre=head; i++; while(i<=sum) { q=(List *)malloc(sizeof(List)); q->data=i; q->next=NULL; q->pre=NULL; p->next=q; p=q; i++; } p=head->next; while(p!=NULL) { printf(\ p=p->next; } One_To_Double(head); }
void One_To_Double(List *head) {
}
int i=-1;
List *p,*data1,*q,*Last;
data1=(List *)malloc(sizeof(List)); p=(List *)malloc(sizeof(List)); q=(List *)malloc(sizeof(List));
data1=head->next;//记住第一个数据 地址 p=head->next;
while(p->next!=NULL) { q=p; //q是前一个节点 p=p->next; //p是后一个节点 p->pre=q; //后一个节点的【前继指针】 指向前一个节点的地址 }
Last=p; //p 就是【最后一个数据】的地址
data1->pre=Last; //【第一个元素】的【前继指针】指向【最后一个元素】的地址 Last->next=data1; //【最后一个元素】的【后继指针】指向【第一个元素】的地址 //双向链表 构成 p=Last;
printf(\while(p->data!=1) { printf(\ p=p->pre; }
printf(\
共分享92篇相关文档