顺序栈

#pragma once
#ifndef _SEQSTACK_
#define _SEQSTACK_

#include <iostream>
using namespace std;
typedef int DataType;

struct SeqStack {
	int MAXNUM;
	int t;
	DataType *s;
};
typedef SeqStack Node;
typedef SeqStack *PSeqStack;

//创建空栈 放回栈指针
PSeqStack creatEmptyStasck(int m) {
	PSeqStack stack = new Node;
	if (stack != NULL) {
		stack->s = new DataType[m];
		if (stack->s != NULL) {
			stack->MAXNUM = m;
			stack->t = -1;
		}
	}
	return stack;
}

//判断栈是否为空  是返回1 否返回0
int isEmptyStack(PSeqStack stack) {
	if (stack->t = -1)return 1;
	else return 0;
}

//进栈
void push_seq(PSeqStack stack, DataType x) {
	//判断栈是否已满
	if (stack->t >= stack->MAXNUM - 1) cout << "OverFlow" << endl;
	else {
		stack->t += 1; //栈指针加1
		stack->s[stack->t] = x;//元素入栈
	}
}

//出栈
void pop_seq(PSeqStack stack) {
	//判断栈是否为空
	if (stack->t == -1)cout << "Underflow!" << endl;
	else {
		stack->t -= 1;
	}
}

//取栈顶元素
DataType top_seq(PSeqStack stack) {
	if (stack->t == -1) {
		cout << "Underflow!" << endl;//判断栈是否为空
		
	}
	else return (stack->s[stack->t]);
}

#endif
posted @ 2022-05-10 23:18  iforeverhz  阅读(63)  评论(0)    收藏  举报