链表,栈和队列

链表

1.创建链表

package com.zzw.链表;

/**
 * 非常基本的单项链表
 * @author john
 *
 */
public class Node {

    Node next=null;
    int data;

    public Node(int d) {
        data=d;
    }
    /*
     * 添加一个结点
     */
    void appendToTail(int d){
        Node end=new Node(d);
        Node n=this;
        while(n.next!=null){
            n=n.next;
        }
        n.next=end;
    }
    /*
     * 删除单向链表中的结点
     */
    Node deleteNode(Node head,int d){
        Node node=head;
        if(node.data==d){
            return head.next;//表头指向下一个结点
        }
        while(node.next!=null){
            if (node.next.data==d) {
                node.next=node.next.next;
                return head;//表头不变
            }
            node=node.next;
        }
        return head;
    }

}

2.栈

package com.zzw.链表;

/**
 * 实现一个 栈
 * @author john
 *  栈采用后进先出(LIFO-last in first out )的顺序,就像一堆盘子,最后入栈的元素最先出栈---栈也可以用链表实现
 *  -用户通常只能看到栈顶的元素
 */
public class Stack {
    Node top;

    //出栈
    Object pop(){
        if (top!=null) {
            Object item=top.data;
            top=top.next;
            return item;
        }
        return null;
    }
    //入栈
    void push(Object item){
        Node t=new Node((int)item);
        t.next=top;
        top=t;
    }
    //获取栈顶元素的数据
    Object peek(){
        return top.data;
    }

}

3.队列

package com.zzw.链表;

/**
 * 实现一个队列
 * 
 * @author john 队列采用先进先出(FIFO-first in,first out)的顺序,就像食堂买饭的队列.
 */
public class Queue {

    Node firstNode, lastNode;

    /*
     * 入栈
     */
    void enqueue(Object item) {
        if (firstNode == null) {
            lastNode = new Node((int) item);
            firstNode = lastNode;
        } else {
            lastNode.next = new Node((int) item);
            lastNode = lastNode.next;
        }
    }
    /*
     * 出栈
     */
    Object dequeue() {
        if (firstNode != null) {
            Object item = firstNode.data;
            firstNode = firstNode.next;
            return item;
        }
        return null;
    }

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值