![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
From the deep
思考+动手=无所不能
展开
-
从零开始编写Java中的单链表(Linkedlist)
动态链表——线性表的链式存储结构为了表示每个数据元素ai与其直接后继元素ai+1之间的逻辑关系,对数据元素a1来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。我们把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。指针域中存储的信息称为指针或链。这两部分信息组成数据元素ai的存储映像,称为结点(Node)n个结点链接成一个链表,...原创 2019-04-04 20:24:02 · 225 阅读 · 0 评论 -
Java中用动态数组实现的栈(ArrayStack)
首先,我们回顾一下栈的定义:栈本质上就是一种特殊的线性表栈是限定仅在表尾进行插入和删除操作的线性表,先进后出的结构元素插入叫进栈,元素删除叫出栈栈的两个基本操作图解:在实现之前,我们需要定义一个线性表。由于这不是我们今天的重点,我就直接把代码的链接放在下面了:[https://blog.csdn.net/qq_43138320/article/details/88919467]接下来...原创 2019-03-31 23:22:40 · 646 阅读 · 0 评论 -
从零开始编写Java中的顺序表
从零开始编写Java中的顺序表Java中的数据结构-----1.动态数组实现的顺序表定义List接口//线性表接口,支持泛型public interface List<E> { public int getSize(); //获取表中实际元素个数 public boolean isEmpty(); //判断是否为空 public void add(int index...原创 2019-03-30 21:27:55 · 267 阅读 · 1 评论 -
Java中的栈-进阶版:双端栈(ArrayStackDoubleEnd)
双端栈:是指从一个线性表的两端当做栈底进行分别的入栈和出栈操作。先自定义一个栈接口:public interface Stack <E>{ public void push(E e); //进栈 public E pop();//出栈 public E peek();//获取栈顶元素 public boolean isEmpty();//判断栈空 public int g...原创 2019-04-01 21:23:09 · 431 阅读 · 1 评论 -
Java中用动态数组实现队列(ArrayQueue)
动态数组——队列的顺序存储结构:队列本质上就是一种特殊的线性表队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表,先进先出的结构元素插入叫入队,元素删除叫出队用动态数组实现的线性表也称为顺序队列定义队列接口:public interface Queue <E> { public int getSize(); //获取队列元素个数 public bool...原创 2019-04-01 22:03:24 · 1334 阅读 · 0 评论 -
Java中的队列-进阶版:循环队列(ArrayQueueLoop)
顺序队列本质上是由顺序表实现的,但是每次出队一个元素,都需要将后续所有元素前移,影响效率。能否在出队时保持其他元素位置不变?可以,但是这样子的话,出队的元素多了,其顺序表中当前队首元素之前会有很多闲置空间。如何利用闲置空间?此处就需要将顺序表收尾相连,形成循环表。我们把这种队列的这种头尾相接的顺序存储结构称为循环队列。我们先定义一个队列接口:public interface Que...原创 2019-04-02 19:54:19 · 326 阅读 · 0 评论 -
从零编写一个单向循环链表(LoopSingle)--- Java实现
当你让单链表的尾指针指向头结点时,一个单向循环链表就诞生了!循环链表:当然,单向循环没这么简单。首先,若你之前知道的单链表是有虚拟头结点的,那么在单向循环链表中,虚拟头结点是多余的,其次,由于末尾结点指针域是不再指向null的,在操作时,是要考虑到的,由于这两个问题,单向循环链表的重点就在于增加结点和删除结点的部分。所以这次我们着重于增加和删除两个方法,整体LoopSingle的实现...原创 2019-09-18 23:10:47 · 420 阅读 · 0 评论 -
牛客刷题 --- 一周错题总结(数组类)
答案:c解答:数组a比数组b大很多,可能跨更多的页,缺页率高或者缓存命中更低,所以pb快2.答案:b解答:本题A[5,8]以列为主,该元素处于第八列,前七列是满的每列8个元素,该元素处于第五行,他的前一个元素A[4,8]的结束地址就是所求的开始,最后,每个元素占3。所以有公式:(7*8+4)*33.答案:c解答:java中数组左边的定义部分是不能出现常数表达式的 所以BD语...原创 2019-09-20 18:16:11 · 206 阅读 · 0 评论