tips:访问结构体内部时,如果是指针 则用 “->” 如果是结构体 则用 “.”直接访问,这是c与c++之间的区别
实现结果如下:
#include <stdio.h>
#define maxsize 30
#define elemtype int
#define bool int
#define false 0
#define true 1
typedef struct {
elemtype data[maxsize];
int top;
}sqstack;
//初始化栈
void initStack(sqstack *s){
s->top = -1;
}
//判断栈空 如果stack是空的 则返回true 否则返回 false
bool empty_stack(sqstack s){
if(s.top == -1){
return true;
}else{
return false;
}
}
//进栈
bool push(sqstack *s,elemtype x){
if(s->top == maxsize-1){
return false;
}
else{
s->data[++(s->top)]=x;
return true;
}
}
//出栈
bool pop (sqstack *s,elemtype x){
if(s->top == -1){
return false;
}
else{
x=s->data[(s->top)--];
return x;
}
}
//读栈顶元素
bool get_top(sqstack s,elemtype *x){
if(s.top == -1){
printf("this stack is null\n");
return false;
}else{
*x = s.data[s.top];
return true;
}
}
int main(){
sqstack s;
initStack(&s);
printf("先1 2 3 入栈 读栈顶元素 再3出栈 再读栈顶元素\n");
elemtype x=0;
push(&s,1);
push(&s,2);
push(&s,3);
get_top(s,&x);
printf("第一次输出:%d\n",x);
pop(&s,x);
get_top(s,&x);
printf("第二次输出:%d\n",x);
}
//注意事项:1,访问结构体内部时,如果是指针 则用 "->" 如果是结构体 则用 “.”直接访问
// 2.c中没有引用传值
// 3.c中即使用 bool 也是要先定义 c 中没有bool类型