作者:解学武
顺序栈的基本操作(入栈和出栈)及C语言实现详解
栈,可以理解为遵循“后入先出”原则的线性表,因此栈结构可以采用顺序表或链表实现。
顺序栈的实现采用的是顺序表,也就是数组。
顺序栈的实现思想是:在数组中设定一个随时指向栈顶元素的变量(一般命名为 top ),当 top 的值为 -1 时,说明数组中没有数据,即栈中没有数据元素,为“空栈”;只要数据元素进栈,top 就加 1 ;数据元素出栈, top 就减 1 。
例如,使用顺序栈的存储结构将('a','b','c','d')四个元素逐个压栈并输出栈顶元素。
实现代码:
声明:当前文章为本站“玩转C语言和数据结构”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
顺序栈的实现采用的是顺序表,也就是数组。
顺序栈的实现思想是:在数组中设定一个随时指向栈顶元素的变量(一般命名为 top ),当 top 的值为 -1 时,说明数组中没有数据,即栈中没有数据元素,为“空栈”;只要数据元素进栈,top 就加 1 ;数据元素出栈, top 就减 1 。
例如,使用顺序栈的存储结构将('a','b','c','d')四个元素逐个压栈并输出栈顶元素。
实现代码:
#include <stdio.h>
//元素elem进栈
int push(char* a,int top,char elem){
a[++top]=elem;
return top;
}
//数据元素出栈
int pop(char * a,int top){
if (top==-1) {
printf("空栈");
return -1;
}
printf("弹栈元素:%c\n",a[top]);
top--;
return top;
}
int main() {
char a[100];
int top=-1;
top=push(a, top, 'a');
top=push(a, top, 'b');
top=push(a, top, 'c');
top=push(a, top, 'd');
top=pop(a, top);
top=pop(a, top);
top=pop(a, top);
top=pop(a, top);
top=pop(a, top);
return 0;
}
输出结果:
弹栈元素:d
弹栈元素:c
弹栈元素:b
弹栈元素:a
空栈
弹栈元素:c
弹栈元素:b
弹栈元素:a
空栈
声明:当前文章为本站“玩转C语言和数据结构”官方原创,由国家机构和地方版权局所签发的权威证书所保护。

ICP备案: