java中数据结构——栈,队列,链表

**

队列

**
对于字符串是否等于某一字符,使用方法:contains,equals

循环队列:
1、如何判断循环队列队为空?
队空:head == tail 跟之前一样。
2、如何判断循环队列队为满
队满:(tail+1) mod QueueSize==head
3、如何获得队列中的元素数量
length=(tail-head+QueueSize)%Queuesize(其中QueueSize表示的是队列的长度,tail表示的队列的尾部,出队时tail所在位置没有元素,head表示的队列的头部)
输入类型的方法:
Scanner scan = new Scanner(System.in);
int m = scan.nextInt(); //整型
String type = scan.next();//字符串型

当栈中有元素时,栈顶元素为1,所以进栈是栈顶元素应为1,而不能是0。在判断是否为空栈的时候,判断条件出错,将判断条件(top!=0)写成(top==0),造成了逻辑条件的错误,导致在main函数中的判断出现错误,从而使得程序运行代码出现问题。

Java中内置栈类:

栈是 Vector 的一个子类,它实现了一个标准的后进先出的栈,至于什么是 Vector,大家可以理解为能力超强的数组,堆栈定义了默认构造函数,用来创建一个空栈。
在 Java 的 stack 模板定义了如下操作流程:
push():执行 push 时(即,将元素推入栈中),是通过将元素追加的数组的末尾中。
//peek()是将其当成栈顶top来使用,取出元素不删除
peek():执行 peek 时(即,取出栈顶元素,不执行删除),是返回数组末尾的元素。
//pop()表示的是取出元素,即执行出栈操作,执行出栈操作时需要将栈中的元素删除
pop():执行 pop 时(即,取出栈顶元素,并将该元素从栈中删除),是取出数组末尾的元素,然后将该元素从数组中删除。
empty():继承于 Vector,返回是否为空
size():继承 Vector,返回元素的个数。

**

Vector

**
Vector在做题的过程中,由于Vector是一个空间动态变化的数组,所以取出数据的时候要通过get来就行取出,因为Vector被封装了。
定义:Vector vector = new Vector();
对于将Vector用作二维数组来说,那么创建对象和存放数据的时候要格外注意。如:

//1、构建一个类似于二维的变量packet	
static Vector<Vector<String>> pakage  = new Vector<Vector<String>>();`

//2、存放数据
city.addElement(k);
//添加包裹
pakage.addElement(new Vector<String>());
 //将新增加的数据添加到城市本身拥有数据的后面,
 //由于Vector类型的city是由1-N,但是下标是从0-N-1
pakage.get(city.size()-1).addElement(m);

**

Queue

**
使用queue进行运算,其中offer是输入,pull为输出。

s定义:Queue queue = new LinkedList();

教训:将输入和输出分开进行处理。

Map

Map是一种映射,其中存在key和value,他们一一对应,通过key确定value

map 是一个关联容器,它提供一对一的 hash。
定义:Map map= new TreeMap();
第一个可以称为关键字(key),每个关键字只能在 map 中出现一次
第二个可能称为该关键字的值(value)
map 以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。Map 主要用于资料一对一映射(one-to-one)的情況

小贴士:
在java运算过程中,一般最小值为-0x3f3f3f3f,而不是-0x7f7f7f7f,防爆,内存不足

你可能感兴趣的:(java,java,数据结构)