#include"stdio.h"
#include"stdlib.h"
typedef struct linklist
{
int date;
linklist *next,*pre;
} linklist;
void csh(linklist **head)
{
*head=new linklist;
(*head)->next=(*head)->pre=(*head);
}
void cread(linklist *head,int n)
{
linklist *p,*q=head;
printf("请输入链表内容\n");
while(n--)
{
p=new linklist;
scanf("%d",&p->date);
q->next=p;
p->pre=q;
q->next=head;//尾插法
head->pre=p;
q=p;//p用于记录头结点前一个结点
}
}
void printflinklist(linklist *head)
{
linklist *p=head->next;
while(p!=head)
{
printf("%d\t",p->date);
p=p->next;
}
}
int main()
{
linklist *head;
int n;
printf("请输入链表长度\n");
scanf("%d",&n);
csh(&head);
cread(head,n);
printflinklist(head);
}
修改处见注释,供参考:
#include"stdio.h"
#include"stdlib.h"
typedef struct linklist
{
int date;
linklist *next,*pre;
} linklist;
void csh(linklist **head)
{
*head=new linklist;
(*head)->next=(*head)->pre=(*head);
}
void cread(linklist *head,int n)
{
linklist *p,*q=head;
printf("请输入链表内容\n");
while(n--)
{
p=new linklist;
scanf("%d",&p->date);
q->next=p;
p->pre=q;
p->next=head;//尾插法 q->next=head;修改
head->pre=p;
q=p;//p用于记录头结点前一个结点
}
}
void printflinklist(linklist *head)
{
linklist *p=head->next;
while(p!=head)
{
printf("%d\t",p->date);
p=p->next;
}
printf("\n");
p = head->pre; //修改
while(p != head)
{
printf("%d\t",p->date);
p=p->pre;
}
printf("\n");
}
int main()
{
linklist *head;
int n;
printf("请输入链表长度\n");
scanf("%d",&n);
csh(&head);
cread(head,n);
printflinklist(head);
return 0;
}