栈和队列
栈
-
栈结构定义 & 初始化
typedef struct Stack{ int data[MAX_SIZE]; int top; }SqStack; void InitStack(SqStack &s){ s.top = -1; // 栈顶指针指向当前元素位置,初始化为-1 } -
判断栈空
// 判断栈空 bool StackEmpty(const SqStack s){ if(s.top == -1) return true; return false; } -
进栈
// 进栈 bool Push(SqStack &s, int x){ if(s.top == MAX_SIZE - 1) return false; // 栈满 s.data[++s.top] = x; // 先移动指针再进栈 return true; } -
出栈
// 出栈 bool Pop(SqStack &s, int &x){ if(s.top == -1) return false; // 栈空 x = s.data[s.top--]; // 先出栈再移动指针 return true; } -
读取栈顶元素
// 读栈顶元素 bool GetTop(const SqStack &s, int &x){ if(s.top == -1) return false; // 栈空 x = s.data[s.top]; return true; }
队列
-
队列结构定义 & 初始化
typedef struct{ int data[MAX_SIZE]; int front, rear; }SqQueue; void InitQueue(SqQueue &q){ q.front = q.rear = 0; // front指向队头,rear指向队尾元素的下一个位置 } -
判断队空
// 判断对空 bool QueueEmpty(const SqQueue &q){ if(q.rear == q.front) return true; // 对空条件rear == front return false; } -
入队
// 判断对空 bool QueueEmpty(const SqQueue &q){ if(q.rear == q.front) return true; // 对空条件rear == front return false; } -
出队
// 出队 bool DnQueue(SqQueue &q, int &x){ if(q.rear == q.front) return false; // 队空 x = q.data[q.front]; // 先出队再+1 q.front = (q.front + 1) % MAX_SIZE; return true; }

浙公网安备 33010602011771号