java第十六讲线性表

线性表

线性表按其存储结构可分为顺序表和链表。
用顺序存储结构储存的线性表称为顺序表
用链式存储结构储存的线性表称为链表。

一、顺序表

将线性表中的数据元素依次存放在某个存储区域中,所形成的表称为顺序表。一维数据就是用顺序表的顺序方式存储的线性表。

二、链表

1)、单向链表

package linkedlist;

/**
 * @Auther: Xinbai
 * @Date:2020/4/28 11:25
 */
public class Node {
    String data;//存放节点数据本身
    Node next;//存放指向下一个节点的引用

    public Node(String data) {
        this.data = data;
    }
}
package linkedlist;

/**
 * @Auther: Xinbai
 * @Date:2020/4/28 11:28
 */
public class NodeTest {
    public static void main(String[] args) {
        Node node1=new Node("node1");
        Node node2=new Node("node2");
        Node node3=new Node("node3");
        node1.next=node2;
        node2.next=node3;
        System.out.println(node1.next.next.data);
        System.out.println("-----------------");

        //增加node4
        Node node4=new Node("node4");
        node1.next=node4;
        node4.next=node2;
        System.out.println(node1.next.next.next.data);
        System.out.println("--------------------");
        //删除node4
        node1.next=node2;
        node4.next=null;
        System.out.println(node1.next.next.data);
    }
}

2)、双向链表
在这里插入图片描述

package linkedlist;

/**
 * @Auther: Xinbai
 * @Date:2020/4/28 13:21
 */
public class Node2 {
    Node2 previous;
    String data;
    Node2 next;
    public Node2( String data){
        this.data=data;
    }
}

package linkedlist;

/**
 * @Auther: Xinbai
 * @Date:2020/4/28 13:21
 */
public class Node2Test {
    public static void main(String[] args) {
        Node2 node1=new Node2("node1");
        Node2 node2=new Node2("node2");
        Node2 node3=new Node2("node3");

        node1.previous=node3;
        node3.previous=node2;
        node2.previous=node1;

        node1.next=node2;
        node2.next=node3;
        node3.next=node1;

        System.out.println(node1.next.next.data);

        //增加node4
        Node2 node4=new Node2("node4");
        node1.next=node4;
        node4.next=node2;

        node2.previous=node4;
        node4.previous=node1;
        System.out.println(node1.next.next.next.data);
        
    }
}

输出结果:
node3
node3

三、栈

  • 栈(Stack)也是一种特殊的线性表,是一种后进先出【LIFO】的结构。
  • 栈是限定仅在表尾进行插入和删除运算的线性表,表尾为栈顶(top),表头为栈底(bottom)。
  • 栈的物理储存可以用顺序储存结构,也可以用链式储存结构。
package linkedlist;

import java.util.LinkedList;

/**
 * @Auther: Xinbai
 * @Date:2020/5/2 20:10
 */
public class MyStack {
    private LinkedList list = new LinkedList();

    public void push(Object o) {
        list.add(o);
    }

    public Object get() {
        return list.removeLast();
    }

    public boolean isEmpty() {
        return list.isEmpty();
    }

    public static void main(String[] args) {
        MyStack myStack = new MyStack();
        myStack.push("one");
        myStack.push("two");

        System.out.println(myStack.get());
        System.out.println(myStack.get());
        System.out.println(myStack.isEmpty());
    }
}

四、队列

  • 队列(Queue)是限定所以的插入只能在表的一端进行,而所有的删除都在表的另一端进行的线性表。
  • 表中允许插入的一端称为队尾(Rear),允许删除的一端称为队头(Front)。
  • 队列的操作是按先进先出(FIFO)的原则进行的。
  • 队列的物理存储可以用顺序储存结构,也可以用链式储存结构。
package linkedlist;

import java.util.LinkedList;

/**
 * @Auther: Xinbai
 * @Date:2020/5/2 19:53
 */
public class MyQueue {
   private LinkedList list=new LinkedList();
    public void put(Object o){
        list.addLast(o);
    }
    public  Object get(){
        return list.removeFirst();
    }
    public  boolean isEmpty(){
        return  list.isEmpty();
    }

    public static void main(String[] args) {
        MyQueue myQueue=new MyQueue();
        myQueue.put("one");
        myQueue.put("two");
        myQueue.put("three");

        System.out.println(myQueue.get());
        System.out.println(myQueue.get());
        System.out.println(myQueue.get());

        System.out.println(myQueue.isEmpty());
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值