顺序栈(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;
}

三、运行结果

在这里插入图片描述

posted @   别团等shy哥发育  阅读(15)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示