如果写的好,请抖抖你们的小指头,点个赞,或评论下。代码不懂得,可以私信我,我7,8 小时都泡在scdn上。
其实最先买的第一本书,是算法导论,当时是在大一,年少无知,以为自己可以读明白,结果现在还在压箱底。有需要的同学我可以邮递过去,邮费自费。
这本是我从知乎上了解的一本红皮书,比较适合入门级。网上还有课后习题的答案。
这本书主要介绍了,排序,搜索,图,和字符串的一些基础算法。,开鲁。
一,栈和队列(Page74)
栈(Stack)
FILO先进后出,我的记忆方法就是模拟放书,和拿书的过程。只能从最上边拿。
栈通常有三种操作啊,push,peek,pop.还有判断非空empty()注意和队列的判断非空的区别队列:isEmpty().
1,数组实现(现在如果你正在看我的博客,请一定打开你喜欢的idea,跟着敲)试着点开它
import java.lang.reflect.Array;
/**
* java:用数组实现的栈,能存储任意类型的数据
* @author 王帅
* @data 2018/3/28
*/
public class ArrayToStack<T> {
private static final int DEFAILT_SIZE = 12;
private T [] Array;
private int count;
//初始化数组和count,反射初始化数组
public ArrayToStack(Class<T> type,int size){
Array =(T[]) java.lang.reflect.Array.newInstance(type,size);
count = 0;
}
//将val添加到栈中
public void push(T val){
Array[count++] = val;
}
//返回“栈顶元素值”,并删除之
public T pop(){
T VAL = Array[--count];
return VAL;
}
// 返回“栈顶元素值”
public T peek(){
return Array[count-1];
}
public int size(){
return count;
}
//返回“栈”是否为空
public boolean empty(){
return count==0;
}
//打印“栈”
public void printArrayStack(){
for(int i = count-1; i>=0; i--){
System.out.println(Array[i]+"\t");
}
}
public static void main(String args[]){
ArrayToStack<String> astack = new ArrayToStack<String>(String.class,DEFAILT_SIZE);
astack.push("逼");
astack.push("牛");
astack.push("帅");
astack.push("王");
astack.printArrayStack();
String temp = astack.pop();
System.out.println(t