循环单链表的tail指向链表的头部,在内存中的表示如下:
打印测试结果:
创建循环单链表
/*单循环链表*/
LinkList CreateCycList()
{
LinkList head;
InitList(&head);
DataType e;
int i = 0;
printf("创建一个单链表,输入0表示结束\n");
while (1) {
printf("请输入第%d个结点的data域值:", i+1);
scanf_s("%d", &e);
if (e == 0) {
break;
}
i++;
InsertList(head, i, e); /*尾部插入结点*/
}
ListNode* tail = GetNode(head, i ); /*结束的时候获取末尾的结点*/
if (tail != NULL) {
tail->next = head; /*末尾的结点指向头部*/
}
return head;
}
打印循环链表
void DisplayCycList(LinkList head)
{
ListNode* p = head->next;
while (p) {
if (p == head) {
break;
}
printf("%4d", p->data);
p = p->next;
}
printf("\n");
}
测试函数
void TestCycList() {
LinkList A=CreateCycList();
DisplayCycList(A);
}