3.循环单链表
初始化空循环单链表
bool InitList(LInkList &L)
{
L = (LNode *)malloc(sizeof(LNode));
if(L==NULL)
return false;
L->next = L;
return true;
}
p是否为表尾
bool isTail(LNode *p)
{
if(p->next == L)
return true;
else
return false;
}
若经常对表尾进行操作,L为头结点,平均时间复杂度O(n)
可让 L 指向表尾元素,这时对表尾和表头操作的平均时间复杂度为O(1)
4.循环双链表
初始化空循环双链表
bool InitDLinkList(DLinkList &L)
{
L = (LNode *)malloc(sizeof(DNode));
if(L==NULL)
return false;
L->prior = L;
L->next = L;
return true;
}
5.静态链表
用数组的方式实现的链表,分配一整片连续的内存空间,各个结点集中安置
实现
#define MaxSize 10
typedef struct{
ElemType data;
int next;
}SLinkList [MaxSize];
void testSLinkList(){
SLinkList a;//a是一个数组
}
查找
T(n) = O(n)