栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构 -- 栈的基本操作(入栈、出栈、取栈顶元素)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构 -- 栈的基本操作(入栈、出栈、取栈顶元素)

栈的基本操作

初始化栈:

#define MAXSIZE 5
typedef struct 
{
    int *top;
    int *base;
    int stacksize;
}SqStack;
void CreateStack(SqStack &S)
{
    S.base=new int[MAXSIZE];
    if(S.base==NULL){
       cout<<"分配内存失败!";
        return ; 
    }
    S.top=S.base;
    S.stacksize=MAXSIZE;
}

入栈:

​
void Push(SqStack &S,int e){

        if(S.top-S.base==maxsize) { cout << "栈满!"; return ; }

        *S.top=e;

        S.top++;

}

出栈:

void Pop(SqStack &S)
{
    if(S.top==S.base){
    cout<<"栈空"< 

取栈顶元素:

int GetTop(SqStack &S)
{
    if(S.top==S.base)
    {
        cout<<"栈空!"< 

完整代码:

#include
#include
using namespace std;



#define maxsize 5
typedef struct
{
	int* base;
	int* top;
	int stactsize;	
}sqstack;

//顺序栈的初始化
void initstack(sqstack& s)
{
	s.base = new int[maxsize];
	if (!s.base) {
		cout << "分配内存失败!" << endl;
		system("pause");
		return;
	}
	s.top = s.base;
	s.stactsize = maxsize;
}
//入栈
void push(sqstack& s, int e)
{
	if ((s.top - s.base)==maxsize) {
		cout << "栈满!" << endl;
		system("pause");
		return;
	}
	*s.top = e;
	s.top++;
	system("pause");
}
//出栈
void pop(sqstack& s)
{
	if (s.top == s.base) {
		cout << "栈空!" << endl;
		system("pause");
		return;
	}
	s.top--;
	system("pause");
}
int gettop(sqstack s)
{
	if (s.top == s.base) {
		cout << "栈空!" << endl;
		system("pause");
	}
	return *(s.top - 1);
}


void menu(sqstack& s) 
{
	cout << "************************" << endl;
	cout << "|       1.入栈         |" << endl;
	cout << "|       2.出栈         |" << endl;
	cout << "|       3.取栈顶元素   |" << endl;
	cout << "|       4.退出         |" << endl;
	cout << "************************" << endl;
	cout << "input your choice(1~4):";

	int i;
	cin >> i;
	int e;
	int e1;
	switch (i) {
	case 1:
		cout << "请输入你要入栈的元素:";
		cin >> e;
		push(s, e);
		break;
	case 2:
		pop(s);
		break;
	case 3:
		e1 = gettop(s);
		if (e1 < 0) break;
		cout << "栈顶元素为:" << e1;
		system("pause");
		break;
	case 4:
		exit(0);
		break;
	default:
		cout << "非法输入!";
		break;
	}
}
//实现顺序结构栈的基本操作(初始化栈,入栈,出栈,获取栈顶元素)
int main()
{
	sqstack s;
	initstack(s);
	while (1) {
		menu(s);
		system("cls");
	}
	
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290868.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号