C/C++(数据结构栈的实现)

栈的实现

特点FILO(先进后出)

假设栈的空间为8
top == 0 不能出栈,已到栈底
top == 8 不能入栈,已到栈顶
top始终指向一个待插入的位置
push操作,1.写入数据,2.top++ 3.前提条件是栈非满
pop操作,1.top--,2.弹出数据 3.前提条件是栈非空

#include<stdio.h>

//需要一个连续的空间
typedef struct _Stack{
    char mem[1024];
    int top;
}Stack;

Stack s;
//判断栈是否为满
int isFull(Stack *ps) {
    return ps->top == 1024;//ps-> == 1024时为真,返回1,也就是满的时候返回真
}
//判断栈是否为空
int isEmpty(Stack *ps) {
    return ps->top == 0;//ps->top == 0;的时候为空栈
}
//入栈操作
void push(Stack *ps,char ch) {
    ps->mem[(ps->top)++] = ch;//先让ps.mem的指针ps.top++然后赋值
}
//出战操作
char pop(Stack *ps) {
    return ps->mem[--(ps->top)];//先对ps.mem的指针--,并且返回
}

int main() {
    Stack s = {{0},0};
    for(char ch = 'a';ch <= 'z';ch++) {
        if(!isFull(&s))
            push(&s,ch);
    }
    while(!isEmpty(&s)) {
        putchar(pop(&s));//弹出
        puts(" ");
    }
}
/*
z
y
x
w
v
u
t
s
r
q
p
o
n
m
l
k
j
i
h
g
f
e
d
c
b
a
*/
原文地址:https://www.cnblogs.com/intelwisd/p/8343794.html