循环链表没有头结点 只有头指针,由头指针指向循环链表中的任意一个结点(指向谁 谁就是头节点)
多用于双向循环链表:
头结点的前驱指针指向最后一个结点
尾结点的后继指针指向头节点
一般都会把头结点写上
main.cpp
#include "pch.h"
#include <iostream>
#include"CirList.h"
int main()
{
CirList list;
Init_List(&list);
Insert_ListHead(&list, 10);
Insert_ListHead(&list, 20);
Show(list);
Insert_ListTail(&list, 30);
Show(list);
}
CirList.cpp
// Cirlist.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "pch.h"
#include <iostream>
#include"CirList.h"
#include<assert.h>
bool IsEmpty(CirList list)//不修改这个指针所以不用传二级指针--?????
{
return list == NULL;//
}
static int Length(CirList list)
{
if (list==NULL) return 0;
CirList p = list;
int count = 0;
while (p->next != list)
{
count++;
p = p->next;
}
return count + 1;
}
bool Init_List(CirList *list)//要修改这个指针的话就传二级指针
{
//因为定义的是CirList list 指针对象 所以要修改的话要传* 如果定义的Node对象 则传引用
assert(list != NULL)