题目要求:
源代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct _DoubleLink
{
int data;
struct _DoubleLink *prior;
struct _DoubleLink *next;
int length;
} DoubleLink, *pDoubleLink;
void CreateTail(pDoubleLink L, int n);
void Doubleout(pDoubleLink L);
void Destroy(pDoubleLink L);
int main(void)
{
int n;
pDoubleLink L = (pDoubleLink)malloc(sizeof(DoubleLink)); //头结点
L->prior = L->next = NULL;
L->length = 0;
printf("输入需要插入的元素个数:");
scanf("%d", &n);
CreateTail(L, n);
Doubleout(L);
Destroy(L);
free(L);
return 0;
}
/******start******/
void CreateTail(pDoubleLink L, int n)
{
pDoubleLink p, q;
p = L;
printf("Input:\n");
for(int i = 0; i < n; i++)
{
q = (pDoubleLink)malloc(sizeof(DoubleLink));
scanf("%d", &q->data);
q->next = NULL;
p->next = q;
q->prior = p;
p = q;
}
}
/******end******/
void Doubleout(pDoubleLink L)
{
pDoubleLink p = L;
printf("output:\n");
while (p->next != NULL)
{
printf("%d ", p->next->data);
p = p->next;
}
printf("\n");
while (p != L)
{
printf("%d ", p->data);
p = p->prior;
}
printf("\n");
}
void Destroy(pDoubleLink L)
{
pDoubleLink p, q;
p = q = L->next;
while (p != NULL)
{
q = p->next;
free(p);
p = q;
}
}
运行结果: