#include <stdio.h>
#include <malloc.h>
typedef struct linknode//定义双向链表
{
int data;
linknode *prior,*next;
} Node,*Linklist;
Linklist Createlist(int n);//建立双向链表
void Showlist(Linklist L);//输出双向链表
int main(void)
{
int n;
scanf("%d",&n);
Linklist L1=Createlist(n);
Showlist(L1);
return 0;
}
Linklist Createlist(int n)//建立双向链表
{
Linklist head=(Linklist)malloc(sizeof(Node));//申请头结点
Node *p,*e;
int x;
p=head;//让p指向头结点
for(int i=0; i<n; i++)
{
e=(Linklist)malloc(sizeof(Node));//申请新的节点
scanf("%d",&x);
e->data=x;
p->next=e;//前一个节点的后继指向新的节点
e->prior=p;//新节点的前驱指向上一个节点
p=e;//始终让p指向当前节点
}
p->next=NULL;//最后一个节点的后继为空
head=head->next;//头结点为空节点,所以向后移动一个
head->prior=NULL;//头结点的前驱为空
return head;//返回头结点
}
void Showlist(Linklist L)//输出双向链表
{
while(L)
{
printf("%d ",L->data);
L=L->next;
}
printf("\n");
}
双向链表的建立与输出
最新推荐文章于 2024-05-05 19:23:34 发布