总结下,(一个)数组/链表实现栈/队列。看看它们的特点:栈有一个栈顶指针top,而队列有队首front,队尾rear(代码务必包含这些最基础的元素);数组容量有限所以需要一个isFull,而链表不需要(每次操作都要申请或释放的开销)(1)数组模拟栈,1. 定义top==-1为空 2. top+1=size满 (2)链表模拟栈,由于栈是后进先出,则链表需要头插(逆序),1. top==nullptr为空 (3)数组模拟队列,需要循环数组 1. front==rear为空 2. (front+1)%size==rear为满--头追上尾巴了 (4)链表模拟队列,这个有点特殊,需要一个不使用的front实体,因为没有实体是无法插入的,也就是说指针是为实体/对象服务的,光有指针没有任何意义,1. front==rear为空(自定义,和博主的有些不同) 2. 删除最后一个元素需要重置空的条件(rear=front).最后,有兴趣可以看看我写的,用的模板,内存泄漏测过了,https://gitee.com/ve2102388688/leetcode/ 在面试题目中的array_stack.cpp,list_stack.cpp array_queue.cpp, list_queue.cpp有bug可以留言
点赞

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务