我们到底能走多远系列(15)

我们到底能走多远系列(15)

扯淡:这些知识点来源是通过面试涉及到的,面的公司不多,香港虚拟主机,知识点涉及也不多,我每次面试后都在备忘录里写下有用的东西,集合起来分享一下,因为是知识点,所以就不出什么面试题目啦。不涉及任何公司,也不谈论面经,纯粹是学习而已。

  《我们到底能走多远系列》的阶段性目标已经达到啦,15个,先给自己鼓励一下吧。

  有目的性学习的确会让人不偷懒,能让人在短时间里努力,自我激励的方式很多,每天花点时间做一件事对你肯定有帮助,好吧先讲一个故事,口痒了,香港虚拟主机,哈哈。

  可能很多朋友都听过了,没关系,再听一遍,你就可以熟练的讲给你的朋友们听了。

  从前有两个和尚他们分别住在河对岸的两个庙里,每天他们都会来河边打水,每天都会见面,时间一长他们就相当于那啥,心灵相通,成了好朋友,但他们谁也没跨过河去看望过对方。这样年复一年,一日,香港服务器,住在东岸的和尚没来打水,西岸的和尚就疑惑了,一天不打水,他喝什么呢?第二天,西岸的和尚还是没来,连续半个月东岸的和尚都没见到西岸的和尚,于是他就想他朋友是不是病了。于是就挑着水去到西岸的庙里,他看到他的朋友一点没事,就问他:你怎么不来河里打水了呢,没有水,你喝什么呢?西岸的和尚把他朋友领到园子里,指着角落里的一口井说,这是我挖的一口井,有了井,就不用再去河边打水了。东岸的和尚又问了:我们平时在庙里怎么忙,几乎没有空闲的时间,你怎么可能有时间挖一口井呢?回答:我每天就在那个地方掘一下,年复一年,它就成了井。

  你在掘你的井吗?

主题:

关于数据结构:有不正确的地方或改进的地方希望你能指出来,我会感谢你给我进步的机会。

1,stack

来自《Introduction to Algorithms》的图:

遵循先进后出(FILO)的原则,下面是模拟的代码:

package code.structures;public class Stack { top;private int length;Stack(int index){this.s = new String[index];this.top = 0;this.length = index;} push(String str){if(str == null){return;}if(top == length){System.out.println(“stack is full”);return;}this.s[top] = str;this.top++;} String pop(){if(this.isEmpty()){System.out.println(“There is no data”);return null;}String s1 = s[–top];//因为数组从0开始,顺便每pop一次要把top减一s[top] = null;return s1;} getTop(){return this.top;}public boolean isEmpty(){if(this.top == 0){return true;}return false;}}

2,Query

来自《Introduction to Algorithms》的图:

遵循先进先出(FIFO)的原则,下面是模拟的代码:

代码使用标志符的方式来控制内部的数组不溢出和为空是不能取出数据。

package code.structures;public class Query {head; tail; length; isFull; isEmpty; Query(int index) {this.s = new String[index];this.head = 0;this.tail = 0;length = index;isFull = false;isEmpty = true;} enQuery(String str) {if (isFull) { // 已满的队列就不能再放数据啦System.out.println(“Query is full”);return false;}// 放在队列的尾部s[tail] = str;tail++; // 移动尾部(tail == length) {tail = 0;}(head == tail) {isFull = true;} (isEmpty) {isEmpty = false;}return true;} String deQuery() {if (isEmpty) {// 空队列就不处理了System.out.println(“Query is empty”);return null;}// 从头部取得数据String str = s[head];head++;if (head == length) {head = 0;}(head == tail) {isEmpty = true;} (isFull) {isFull = false;}return str;}public boolean isEmpty(){return isEmpty;}public boolean isFull(){return isFull;}}

3,ArrayList和LinkedList

我们不看他们的源码,但也有必要知道他们大概的实现方式:ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。这就是他们区别的关键之处,我想着相当于是一个数组和一个链表在比较。

ArrayList基于数组的,看他的构造方法:

所有的失败,与失去自己的失败比起来,更是微不足道

我们到底能走多远系列(15)

相关文章:

你感兴趣的文章:

标签云: