单链表转换成双向循环链表

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
p=head->next;
while(p!=NULL)
{
printf("%d ",p->data);
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));
void main()
{
int i=1,sum;
List *head,*q,*p;
head=(List *)malloc(sizeof(List));
head->pre=NULL;
printf("输入链表的长度:");
scanf("%d",&sum);
p=(List *)malloc(sizeof(List));
#include<stdio.h>
#include<stdlib.h>
struct linklist
{
int data;
struct linklist *pre;
struct linklist *next;
};
typedef struct linklist List;
void One_To_Double(List *head);
//双向链表构成
p=Last;
printf("\n\n");
while(p->data!=1)
{
printf("%d ",p->data);
p=p->pre;
}
printf("%d \n",p->data);
}
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->pre=q; //后一个节点的【前继指针】指向前一个节点的地址
}
Last=p; //p就是【最后一个数据】的地址
data1ห้องสมุดไป่ตู้>pre=Last; //【第一个元素】的【前继指针】指向【最后一个元素】的地址
Last->next=data1; //【最后一个元素】的【后继指针】指向【第一个元素】的地址
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是后一个节点
相关文档
最新文档