栈
/* 基于链表实现的栈 */
typedef struct {
ListNode *top; // 将头节点作为栈顶
int size; // 栈的长度
} LinkedListStack;
理解:
- 栈顶插入或删除,只需一个栈
指针
即可; - 数组或链表实现;
- 链表节点动态生成,数组节点为动态数组;每个栈由上述
ListNode *top;
与int size;
指定; - 对于链表实现的栈有:‘头插法’ top指向链表头部,‘尾插法’指向链表尾部;
队列
/* 基于链表实现的队列 */
typedef struct {
ListNode *front, *rear;
int queSize;
} LinkedListQueue;
理解:
- 队列底部插入,顶部删除,需要两个
指针
分别跟踪队列底部与尾部; - 数组或链表实现;