定义:
typedef struct DuLNode
{
int data;
struct DuLNode *prior;
struct DuLNode *next;
}DuLNode, *DuLinkList;
构造循环链表
与单链表不同的是L->next = L;而不是L->next = NULL;
bool InitDuList(DuLinkList &L)
{
L = (DuLinkList)malloc(sizeof(DuLNode));
if(L == NULL)
{
printf("初始化失败!\n");
return false;
}
L->next = L;//这里不是=NULL
printf("初始化成功!\n");
}
尾插法构造循环链表
与单链表不同的是
r->next = L;而不是r->next = NULL;
void CreateDuList_tail(DuLinkList &L, int n)
{
DuLNode *p;
DuLNode *r = L;
printf("尾插法正序建立单链表 输入%d个元素:", n);
for(int i = 0; i < n; i ++)
{
p = (DuLinkList)malloc(sizeof(DuLNode));
scanf("%d", &p->data);
r->next = p;
r = p;
}
r->next = L;//此处不是=NULL
}
输出循环链表
循环终止条件不是p != NULL;而是p != L;
void print_DuList(DuLinkList L)
{
DuLNode *p;
p = L->next;
while(p != L)//不是p != NULL
{
printf("%d ", p->data);
p = p->next;
}
}