Objective-C栈的实现

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

运行结果:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宏权实验室

有你的鼓励,我会更加努力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值