本文主要介绍了C语言栈的基础操作,包括栈的定义、初始化、入栈、出栈、判断栈空和栈满等操作,帮助读者掌握栈的使用方法,以便在编写程序时更加高效地利用栈。
什么是栈?
栈是一种数据结构,它是一种线性结构,具有先进后出的特点。栈可以用数组或链表来实现,常用于程序中的函数调用、表达式求值等场景。
如何定义一个栈?
定义一个栈需要用到结构体和指针。结构体中包含一个数组和一个指向栈顶的指针。
```e MXSIZE 100
typedef struct {t data[MXSIZE];t top;
} Stack;
如何初始化一个栈?
将栈顶指针top赋值为-1即可。
```itStack(Stack s) {
s->top = -1;
如何判断栈是否为空?
当栈顶指针top等于-1时,表示栈为空。
```tpty(Stack s) { s->top == -1;
如何判断栈是否已满?
当栈顶指针top等于MXSIZE-1时,表示栈已满。
```t IsFull(Stack s) { s->top == MXSIZE-1;
如何入栈?
将元素压入栈顶,同时将栈顶指针top加1。
```t x) {
if (IsFull(s)) {tf");;
}
s->data[++s->top] = x;
如何出栈?
将栈顶元素弹出,同时将栈顶指针top减1。
```t Pop(Stack s) {pty(s)) {tfpty"); -1;
} s->data[s->top--];
栈的应用场景有哪些?
栈在程序中有很多应用场景,包括函数调用、表达式求值、括号匹配、图的深度优先遍历等。其中,函数调用时使用栈来保存函数调用的现场,表达式求值时使用栈来保存操作数和运算符,括号匹配时使用栈来判断括号是否匹配,图的深度优先遍历时使用栈来保存遍历的节点。