数据结构(顺序栈)

news/2024/11/28 11:45:49/

实现栈的初始化,进栈,出栈,取栈顶,判断是否空栈,销毁栈

#include<iostream>
#include<cstdio>
#include<malloc.h>
using namespace std;
typedef int ElemType;
const int MaxSize=50;
typedef struct
{ElemType data[MaxSize];int top;
}SqStack;void InitStack(SqStack *&s){s=(SqStack *)malloc(sizeof(SqStack));s->top=-1;
}void CreateStack(SqStack *&s,int a[],int n)
{s=(SqStack *)malloc(sizeof(SqStack));for(int i=0;i<n;i++)s->data[i]=a[i];s->top=n;
}bool EmptyStack(SqStack *s)
{return s->top==-1;
}void Destroy(SqStack *&s)
{free(s);}bool disp(SqStack *&s)
{if(s->top==-1)return false;for(int i=0;i<s->top;i++)cout<<s->data[i]<<" ";cout<<endl;return true;
}bool Push(SqStack *&s,int e)
{if(s->top==MaxSize)return false;s->top++;s->data[s->top-1]=e;return true;
}bool Gettop(SqStack *&s,int &e)
{if(s->top==-1)return false;e=s->data[s->top-1];return true;
}bool Pop(SqStack *s,int &e)
{if(s->top==-1)return false;e=s->data[s->top-1];s->top--;return true;
}int main()
{SqStack *s;ElemType a[MaxSize];InitStack(s);int n,i,e;
cout<<"请输入一个栈的长度n"<<endl;
cin>>n;
cout<<"请输入栈中的数字: ";
for(i=0;i<n;i++)
cin>>a[i];
CreateStack(s,a,n);
cout<<"栈s: ";
disp(s);Gettop(s,e);
cout<<endl<<"栈顶的元素是 : "<<e<<endl;cout<<"请输入你想进栈的元素 :  ";
cin>>e;
Push(s,e);
cout<<"栈s: ";
disp(s);Pop(s,e);
cout<<endl<<"栈顶的元素是 : "<<e<<endl;
cout<<"栈顶出栈之后的s是: ";
disp(s);i=EmptyStack(s);if(i)cout<<endl<<"这是一个空栈"<<endl;elsecout<<endl<<"这不是一个空栈"<<endl;Destroy(s);
}

http://www.ppmy.cn/news/487349.html

相关文章

数据结构(Kruskal算法)

main.cpp #include<iostream> #include <stdio.h> #include <algorithm> using namespace std; const int N50005; int head[N],tot0,n,m,cnt0,fa[N]; int ans0; struct Edge{int u,v;//边的两个顶点int w;//边的权值inline friend bool operator <(Edge…

B端产品之数据分析能力

目录 学习目标&#xff1a;数据分析的思维框架以及工作需要的知识结构&#xff0c;数据分析结果外化-撰写数据分析报告 分析流程分析要点分析报告 数据分析流程 明确主题&#xff0c;尽量细化提出假设验证并修正假设&#xff1a;分析过程中对各个关联维度进行数据可视化观察…

Git进阶系列 | 2. Git中的分支策略

Git是最流行的代码版本控制系统&#xff0c;这一系列文章介绍了一些Git的高阶使用方式&#xff0c;从而帮助我们可以更好的利用Git的能力。本系列一共8篇文章&#xff0c;这是第2篇。原文&#xff1a;Branching Strategies in Git[1] 几乎所有的版本控制系统(VCS)都有某种类型的…

MybatiPlus

Java是按值传递还是按引用传递? 值传递(pass by value&#xff09;是指在调用方法时&#xff0c;将实际参数的值或内存地址复制一份传递到方法中(创建参数值或内存地址的副本) 引用传递&#xff08;pass by reference&#xff09;是指在调用方法时&#xff0c;将实际参数的内…

IPMI v2 -I lanplus

一个比较新的服务器, 在使用ipmitool查看传感器信息时, 无法建立会话. # /usr/bin/ipmitool -L operator -H xxx.xxx.xxx.xxx -U xx -P xx sensor Get Session Challenge command failed Error: Unable to establish LAN session 使用lanplus接口就正常了. # /usr/bin/ipmitool…

ePRTC的现网部署

ePRTC简介 ePRTC&#xff08;Enhanced Primary Reference Time Clock&#xff09;是一种高精度时间源&#xff0c;用于提供精确的时间和频率参考。ePRTC 是在网络和通信领域广泛使用的一种时钟同步技术。它基于 GNSS&#xff08;Global Navigation Satellite System&#xff0c…

三星Samsung SCX-4726FN 驱动

三星Samsung SCX-4726FN 驱动是官方提供的一款一体机&#xff08;打印/扫描&#xff09;驱动&#xff0c;本站收集提供高速下载&#xff0c;用于解决一体机与电脑连接不了&#xff0c;无法正常使用的问题&#xff0c;本动适用于&#xff1a;Windows XP / Windows 7 / Windows 8…