顺序栈(Visual Studio实现)
顺序栈(Visual Studio开发环境)
一、栈的顺序存储结构
利用顺序存储方式实现的栈称为顺序栈。类似于顺序表的定义,栈中的数据元素用一个预设的足够长度的一维数组来实现:datatype data[MAXSIZE],栈底位置可以设置在数组的任一个断点,而栈顶是随着插入和删除而变化的,用一个 int top来作为栈顶的指针,指明当前栈顶的位置,同样将data和top封装在一个结构中
通常将0下标端设为栈底,这样空栈时栈顶指针为-1,入栈时,栈顶指针加1,即s->top++,出栈时,栈顶指针减1,即s->top–.
二、代码实现
stack.h头文件
#pragma once
# define MAXSIZE 100
typedef int datatype;
typedef struct
{
datatype data[MAXSIZE];
int top; //栈顶指针
}SeqStack;
//置空栈
SeqStack *Init_SeqStack()
{
SeqStack *s;
s =(SeqStack *) malloc(sizeof(SeqStack));
s->top = -1;
return s;
}
//判空
int Empty_SeqStack(SeqStack *s)
{
if (s->top == -1) {
return 1;
}
else {
return 0;
}
}
//入栈
int Push_SeqStack(SeqStack *s, datatype x) {
if (s->top == MAXSIZE - 1) {//栈满不能入栈
return 0;
}
else {
s->top++;
s->data[s->top] = x;
return 1;
}
}
//出栈
int Pop_SeqStack(SeqStack *s, datatype *x) {
if (Empty_SeqStack(s)) {
return 0;//栈空不能出栈
}else {
*x = s->data[s->top];
s->top--;
return 1;
}
}
//取栈顶元素
datatype Top_SeqStack(SeqStack *s) {
if (Empty_SeqStack(s)) {//栈空
return 0;
}
else {
return (s->data[s->top]);
}
}
源文件:
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include "stack.h"
int main() {
SeqStack *stack1;
int x,x1;
stack1 = Init_SeqStack();
//入栈10个元素
for (int i = 0; i < 10; i++) {
Push_SeqStack(stack1, i + 1);
}
x1 = Top_SeqStack(stack1);
printf("栈顶的数据元素为:%d\n", x1);
//全部出栈的顺序
while (!Empty_SeqStack(stack1)) {
Pop_SeqStack(stack1, &x);
printf("%d ", x);
}
system("pause");
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?