#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);
}
是双向链表?void cread()函数这么改:
void cread(linklist *head,int n)
{
linklist *p,*q=head;
printf("请输入链表内容\n");
while(n--)
{
p=new linklist;
p->next = NULL; //修改
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!=NULL) //(p!=head)
{
printf("%d\t",p->date);
p=p->next;
}
}