java 实现顺序栈基本操作

 

Node类:

package SqStack;

public class Node {
    String name;
    int age;

    public Node() {
    }

    public Node(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return name+"\t"+age;
    }
}

SqStack类:

package SqStack;

public class SqStack {
    int base;//栈顶
    int top;//栈底
    int MAXValue;//最大容量
    Node[] nodes;
    public SqStack() {
        initSqStack();
    }

    //顺序栈的初始化
    public void initSqStack() {
        base=0;
        top=0;
        MAXValue=5;
        nodes=new Node[MAXValue];
    }

    //判断栈是否为空
    public boolean isEmpty() {
        if(top==base)
           return true;
        else
            return false;
    }

    //判断栈是否满了
    public boolean isFull() {
        if(top==MAXValue)
            return true;
        else
            return false;
    }

    //得到栈的长度
    public int getLength() {
        return (top-base);
    }
    //入栈
    public void push(Node node) {
        if(isFull()) {
            System.out.println("栈满,无法添加");
        }
        else {
            nodes[top++]=node;
        }
    }

    //出栈
    public Node pop() {
        if(isEmpty()) {
            System.out.println("栈空,无法操作");
            return null;
        }

        else
            return nodes[--top];
    }

    //查看栈顶元素
    public Node peak() {
        if(isEmpty()) {
            System.out.println("栈空,无法操作");
            return null;
        }

        else {
            int t=top-1;
            return  nodes[t];
        }

    }
}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
顺序栈(Sequence Stack)是一种基于数组实现的栈结构,可以进行入栈和出栈操作,下面是它的基本操作: 1. 初始化栈: 首先需要定义一个数组和一个指针,数组用来存储栈中的元素,指针指向栈顶元素的下一个位置,初始时指针指向数组的第一个位置。具体实现如下: ``` #define MAXSIZE 100 // 定义栈的最大容量 typedef struct { int data[MAXSIZE]; // 存储栈中的元素 int top; // 栈顶指针 } SeqStack; void InitStack(SeqStack *S) { S->top = 0; // 栈顶指针初始化为0 } ``` 2. 判断栈是否为空: 判断栈是否为空,只需要判断栈顶指针是否为0,如果为0,则表示栈为空,否则栈中还有元素。具体实现如下: ``` bool StackEmpty(SeqStack S) { if (S.top == 0) { return true; } else { return false; } } ``` 3. 判断栈是否已满: 判断栈是否已满,只需要判断栈顶指针是否等于栈的最大容量,如果等于,则表示栈已满,否则栈中还有空间可以添加元素。具体实现如下: ``` bool StackFull(SeqStack S) { if (S.top == MAXSIZE) { return true; } else { return false; } } ``` 4. 入栈操作入栈操作就是向栈中添加一个元素,只需要将元素添加到栈顶指针所指向的位置,然后将栈顶指针加1即可。具体实现如下: ``` bool Push(SeqStack *S, int x) { if (StackFull(*S)) { return false; // 栈已满,无法入栈 } else { S->data[S->top] = x; // 将元素添加到栈顶指针所指向的位置 S->top++; // 栈顶指针加1 return true; } } ``` 5. 出栈操作: 出栈操作就是将栈顶元素弹出,只需要将栈顶指针减1,然后返回栈顶元素即可。具体实现如下: ``` bool Pop(SeqStack *S, int *x) { if (StackEmpty(*S)) { return false; // 栈为空,无法出栈 } else { S->top--; // 栈顶指针减1 *x = S->data[S->top]; // 返回栈顶元素 return true; } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值