顺序栈定义
// 顺序栈的定义
#define MaxSize 100
struct SqStack {
int data[MaxSize];
int top;
};
顺序栈-入栈:
bool push(SqStack &s, int e){
// 把元素e放入栈s
// 1、判断
if(s.top == MaxSize - 1){
return 0; // 栈满
}
// 2、执行
s.top = s.top+1;
s.data[s.top] =e;
// 3、处理
return 1;
}
顺序栈-出栈:
// 顺序栈-出栈
bool pop (SqStack &s) {
// 把栈顶元素出站S
// 1、判断
if(s.top == -1) {
return 0;
}
// 2、执行
s.top--;
// 3、处理
return 1;
}
链栈-定义
// 链栈- 定义
struct LqStack {
// 链栈的结构体
int data; // 存放栈元素
struct LqStack *next; // 栈顶所在结点
};
链栈-入栈:
// 链栈-入栈
void push (LqStack *L, int e) {
// 把元素e放入链栈L,使用头插法
LqStack *q, *p =L;
q = (LqStack *)malloc(LqStack); //需要开辟空间
q -> data = e;
q -> next = p -> next;
p -> next = q;
}
链栈-出栈:
// 链栈 - 出栈
bool pop (LqStack *L) {
// 把栈顶元素出链栈L
LqStack *p =L; *q = L->next;
p -> next = q -> next;
free(q);
return 1;
}
// 链栈-打印
// 链栈-打印
void print(LqStack *L) {
LqStack *p = L -> next;
cout << "从栈顶开始打印:" << endl;
while(p) {
cout << p -> data << endl;
p = p -> next;
}
}