目录
我们在这里要写的是双向带头循环链表(以下简称链表),可以说所有buff都叠满了,我们写起来肯定比单链表要得心应手多得多。
我们从图中可以就看到我们需要定义的结构体数据了:
从定义的结构体我们就可以轻松想到我们的链表应当如何初始化,那就是让next和prev都指向它本身,此外,还要记住既然是链表,那么我们的结点都是动态开辟出来的。
链表的销毁当然也是一个结点一个结点free的,而且因为我们的pHead是哨兵位,我们设置的cur应该从pHead的下一个结点开始free,同时,通过对while条件的设置,保证pHead不被重复free
我们在测试时必须要能直观地观察我们的数据吧,这时一个打印链表函数就是必不可少的。
为了我们插入方便,我们还要再写一个创建结点的函数。
双向带头循环链表集满所有buff,代码简易,所以这里不再过多赘述,容易忽略的地方会特别提醒
我们的尾删是要不包括头结点的,所以我们要额外判断一下pHead的next
我们的头删也是要不包括头结点的,所以我们也要额外判断一下pHead的next
五、代码