数据结构上机作业(二)

一.上机内容

1、顺序栈和链栈基础上的基本操作及实现。
2、顺序存储基础上的循环队列基本操作及实现。
3、假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的队列初始化、入队列和出队列的算法。
4*、假设将循环队列定义为:以域变量rear和length分别指示循环队列中队尾元素的位置和内含元素的个数。试给出此循环队列的队满条件,并写出相应的入队列和出队列的算法(在出队列的算法中要返回队头元素)。
5*、利用栈和队列的知识,解决停车场管理问题

二.代码实现

1、顺序栈和链栈基础上的基本操作及实现。

(1)链表实现:

package com.作业.ch03;

// 使用链表来实现栈
public class Stack01<T> implements IStack<T>{
   
    // 内部节点类
    private class Node{
   
        // 属性
        T item;
        Node next;
        // 构造方法
        public Node(T item, Node next) {
   
            this.item = item;
            this.next = next;
        }
    }

    // 属性
    // 栈中元素个数
    int N;
    // 栈顶
    Node top;

    // 构造方法
    public Stack01() {
   
        this.N = 0;
        this.top = new Node(null,null);
    }

    /**
     * 清空一个栈
     */
    @Override
    public void clear() {
   
        this.N = 0;
        this.top = new Node(null,null);
    }

    /**
     * 判断栈是否为空
     * @return
     */
    @Override
    public boolean isEmpty() {
   
        return this.N == 0;
    }

    /**
     * 获取栈的长度
     * @return
     */
    @Override
    public int length() {
   
        return this.N;
    }

    /**
     * 取栈顶元素并返回其值
     * @return
     */
    @Override
    public T peek() {
   
        return top.next.item;
    }

    /**
     * 压栈
     * @param t
     * @throws Exception
     */
    @Override
    public void push(T t) throws Exception {
   
        // 创建新节点,指向原来top指向的节点
        Node newNode = new Node(t,top.next);
        top.next = newNode;
        // 长度加一
        this.N++;
    }

    /**
     * 弹栈
     * @return
     */
    @Override
    public T pop() {
   
        // 找到原来的首节点
        if (isEmpty()){
   
            return null;
        }else{
   
            Node oldNode = top.next;
            top.next = top.next.next;
            return oldNode.item;
        }
    }
}

(2)
顺序表实现:

package com.作业.ch03;

public class Stack02<T> implements IStack<T> {
   
    // 属性
    public T[] array;
    public int N;

    public Stack02(int capacity) {
   
        this.array = (T[]) new Object[capacity];
        this.N = 0;
    }

    /**
     * 清空栈
     */
    @Override
    public void clear() {
   
        this.N = 0;
    }

    /**
     * 判断栈是否为空
     * @return
     */
    @Override
    public boolean 
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值