#ifndef myStack_hpp
#define myStack_hpp
#include <stdio.h>
struct myStack
{
#define MAX_STACK_SIZE 10
public:
int elmSize{0};
int elms[MAX_STACK_SIZE];
bool isFull(){return elmSize==MAX_STACK_SIZE;}
bool isEmpty(){return elmSize==0;}
void push(int v){
if(!isFull()){
elms[elmSize++]=v;
}else{
perror("Stack is Full");
}
}
int pop(){
if(isEmpty()){
perror("Empty Stack Pop");
return -1;
}
int popNum = elms[elmSize-1];
elmSize--;
return popNum;
}
int peek(){
if(isEmpty()){
perror("Empty Stack Pop");
return -1;
}
return elms[elmSize-1];
}
};
struct myStack2{
#define MAX_STACK_SIZE2 20 //栈大小
public:
int eles[MAX_STACK_SIZE2];//栈容器
int top;//栈顶
bool isFull(){return top == MAX_STACK_SIZE2-1;}//满栈
bool isEmpty(){return top==-1;}//空栈
//初始化栈
void init(){
top=-1;
}
//入栈
void push(int v){
if (isFull()) {
perror("stack is full ,can't push ele");
}
eles[++top]=v;
}
//出栈
int pop(){
if (isEmpty()) {
perror("stack is empty ,can't pop ele");
return -1;
}
int popV=eles[top];
top--;
return popV;
}
//查看栈顶
int peek(){
if (isEmpty()) {
perror("stack is empty ,can't peek ele");
return -1;
}
return eles[top];
}
}STACK2;
#endif
#import <Foundation/Foundation.h>
#include "myStack.hpp"
int main(int argc, const char * argv[]) {
@autoreleasepool {
myStack tmpStack;
for (int i=0; i<MAX_STACK_SIZE; i++) {
int v=i+1;
NSLog(@"入栈:%d",v);
tmpStack.push(v);
}
for (int i=0; i<MAX_STACK_SIZE; i++) {
NSLog(@"查看栈顶元素:%d",tmpStack.peek());
NSLog(@"出栈:%d",tmpStack.pop());
}
NSLog(@"===================================");
myStack2 tmpStack2;
tmpStack2.init();
for (int i=0; i<MAX_STACK_SIZE2; i++) {
int v=i+1;
NSLog(@"入栈:%d",v);
tmpStack2.push(v);
}
for (int i=0; i<MAX_STACK_SIZE2; i++) {
NSLog(@"查看栈顶元素:%d",tmpStack2.peek());
NSLog(@"出栈:%d",tmpStack2.pop());
}
}
return 0;
}
运行结果:

文章介绍了C++中定义的两个栈数据结构myStack和myStack2,包括它们的成员变量、函数(如push,pop,peek)以及使用示例,展示了如何创建、操作和查看栈顶元素。
820

被折叠的 条评论
为什么被折叠?



