数据结构学习之栈

数据结构学习之栈

数组加循环>>栈

栈先入后出(FILO)例子弹 先压进的后打出

栈里面的数据可以是任意数据类型

入栈 向里面放数据

出栈 将数据从栈里取出

栈只有入栈和出栈的操作

并且只能操作最顶层的数据

/*
思路:
@创建一个容器 即数组
@放数据: 栈指针指向下一个位置 此时指向的数据为空 top++
@取数据: 将指针指向之前放入的数据 即--top
@检测数据是否为空:为空则结束取数据

 

简洁版:

//数据结构:栈
#include<stdio.h>

char stack[512];//存放栈的数据
int top = 0; //指向栈顶的指针

void push(char c);
char pop(void);
int is_empty(void);

int main(void) {
push('a');
push('b');
while (!is_empty()) {
putchar(pop());
}
return 0;
}

//入栈操作
void push(char c) {
stack[top++] = c;
}

//出栈操作
int pop(void) {
return stack[--top];
}

//检测栈是否为空
int is_empty(void) {
return top == 0;
}

部分注释版本:

//数据结构:栈
#include<stdio.h>

char stack[512];//存放栈的数据
int top = 0; //指向栈顶的指针

void push(char c);
char pop(void);
int is_empty(void);

int main(void) {
push('a');
push('b');
while (!is_empty()) {  //一直检测栈是否为空 为空则退出 is_empty() == 0与!is_empty()作用相同
putchar(pop());
}
return 0;
}

//入栈操作
void push(char c) {
//存放数据后指向下一个位置 top++是先使用top 使用完++
stack[top++] = c;
}

//出栈操作
char pop(void) {
//取出数据指向前一个数据 --top是先减一在使用数据
return stack[--top];
}

//检测栈是否为空
int is_empty(void) {
//top为零返回真 不为零则为假 真即为空,假即为不空
return top == 0;
}

全注释版本:方便复习

//数据结构:栈
#include<stdio.h>

char stack[512];//存放栈的数据
int top = 0; //指向栈顶的指针

void push(char c);
int pop(void);
int is_empty(void);

int main(void) {
push('a');//放字符a
push('b');//放字符b
while (!is_empty()) { //一直检测栈是否为空 为空则退出is_empty() == 0与!is_empty()作用相同
putchar(pop());//将栈中的数据打印
}
return 0;
}

//入栈操作
void push(char c) {
//存放数据后指向下一个位置 top++是先使用top 使用完++
stack[top++] = c;
}

//出栈操作
char pop(void) {
//取出数据指向前一个数据 --top是先减一在使用数据
return stack[--top];
}

//检测栈是否为空
int is_empty(void) {
/* if (top == 0) {
return 1; //返回为真
}
if (top == 0) {
return 0; //返回为假
}
*/
//top为零返回真 不为零则为假 真即为空,假即为不空
return top == 0;
}
 

 

posted @ 2022-04-23 11:50  2022/3/19/312/7-4  阅读(34)  评论(0)    收藏  举报