![aab814ebd39f0b3803f6d7caa287f16f.png](https://i-blog.csdnimg.cn/blog_migrate/3c8e3ac2324d9efede035a1037b72c15.jpeg)
祖传的手艺不想丢了,所以按顺序写一个leetcode的题解。计划每日两题,争取不卡题吧。
622.设计循环队列https://leetcode-cn.com/problems/design-circular-queue/
题目要求实现循环队列,具体为插入、删除、获取队首或队尾元素值这几种操作。队列是先进先出,因此插入需要我们维护队尾元素,而删除则需要维护队首元素,恰好与获取队首队尾元素重叠。
由于题目没有要求我们展现出“循环”这个性质,因此我们只需要想办法维护住队首和队尾即可,而最简单的做法就是维护一条单链表的头尾节点。
对于插入操作,我们新建一个节点。若当前链表为空,那么将头尾节点都置为该节点,否则将尾结点的next指向当前结点,然后将尾结点置为该节点。
对于删除操作,若链表中只有一个元素,那么将头尾节点都置为空,否则将头结点置为头结点的next节点,然后删去原先的头结点。
最后附上python代码:
class