第一个用switch(n){ case1:.. case2:.. } 第二个 public class ArrayStack { Object[] m_elements; int m_size; public ArrayStack(int len) { m_elements = new Object[len]; m_size = 0; } public ArrayStack() { this(50); } // insert onto stack public void push(Object element) { m_elements[m_size] = element; m_size++; } // return and remove the top element public Object pop() { if (!this.isEmpty()) { Object obj = m_elements[m_size - 1]; m_elements[m_size - 1] = null; m_size--; return obj; } else { return null; } } // return the top element public Object top() { if (!this.isEmpty()) { return m_elements[m_size - 1]; } else { return null; } } // return 1 --> is empty // return 0 --> is not empty public boolean isEmpty() { return this.size() == 0; } public int size() { return m_size; } } 使用链表实现(单链表) : public class Stacklist { Node m_header; int m_size; public ListStack() { m_header = null; m_size = 0; } public void push(Object value) { m_header = new Node(value, m_header); } public Object pop() { if (!this.isEmpty()) { throw new RuntimeException("Stack underflow"); } Object obj = m_header.element; m_header = m_header.next; return obj; } // return reference to most recently added elemenet public Object peek() { if (!this.isEmpty()) { throw new RuntimeException("Stack underflow"); } return m_header.element; } public boolean isEmpty() { return this.size() == 0; } //return the number of the queue's elements; public int size() { return m_size; } } 链表的需要用到一个结点类 Node.java 代码如下 public class Node { Object element; Node next; public Node(Object theElement) { this(theElement, null); } public Node(Object theElement, Node n) { element = theElement; next = n; } public Object getElement() { return element; } public void setElement(Object element) { this.element = element; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } }
大哥,第一个是斐波那契数列,好象跟java没什么关系,主要是数学问题吧,在说你要是的函数.... public class Fibonacci { public static long fib(int n) { if (n <= 1) return n; else return fib(n-1) + fib(n-2); }
public static void main(String[] args) { int N = Integer.parseInt(args[0]); for (int i = 1; i <= N; i++) System.out.println(i + ": " + fib(i)); }
} 随便你怎么改 第二个实现堆践?堆栈? 数组实现的堆栈:ArrayStack.java public class ArrayStack { Object[] m_elements; int m_size; public ArrayStack(int len) { m_elements = new Object[len]; m_size = 0; } public ArrayStack() { this(50); } // insert onto stack public void push(Object element) { m_elements[m_size] = element; m_size++; } // return and remove the top element public Object pop() { if (!this.isEmpty()) { Object obj = m_elements[m_size - 1]; m_elements[m_size - 1] = null; m_size--; return obj; } else { return null; } } // return the top element public Object top() { if (!this.isEmpty()) { return m_elements[m_size - 1]; } else { return null; } } // return 1 --> is empty // return 0 --> is not empty public boolean isEmpty() { return this.size() == 0; } public int size() { return m_size; } } 看看能不能用...
第一题的参考 public static void main(String[] args) throws IOException { for (int n = 1; n <= 10; n++) { System.out.println(f(n)); } } public static int f(int n) { if (n <= 0) { return 0; } else if (n == 1 || n == 2) { return 1; } return f(n - 1) + f(n - 2); }第二题自己想吧,Java自己就有Stack 你可以用ArrayList 来模拟!
case1:..
case2:..
}
第二个
public class ArrayStack {
Object[] m_elements;
int m_size; public ArrayStack(int len) {
m_elements = new Object[len];
m_size = 0;
} public ArrayStack() {
this(50);
} // insert onto stack
public void push(Object element) {
m_elements[m_size] = element;
m_size++;
} // return and remove the top element
public Object pop() {
if (!this.isEmpty()) {
Object obj = m_elements[m_size - 1];
m_elements[m_size - 1] = null;
m_size--; return obj;
} else {
return null;
}
} // return the top element
public Object top() {
if (!this.isEmpty()) {
return m_elements[m_size - 1];
} else {
return null;
}
} // return 1 --> is empty
// return 0 --> is not empty
public boolean isEmpty() {
return this.size() == 0;
} public int size() {
return m_size;
}
} 使用链表实现(单链表) :
public class Stacklist {
Node m_header; int m_size; public ListStack() {
m_header = null;
m_size = 0;
} public void push(Object value) { m_header = new Node(value, m_header); } public Object pop() {
if (!this.isEmpty()) {
throw new RuntimeException("Stack underflow");
} Object obj = m_header.element; m_header = m_header.next; return obj;
} // return reference to most recently added elemenet
public Object peek() {
if (!this.isEmpty()) {
throw new RuntimeException("Stack underflow");
} return m_header.element;
} public boolean isEmpty() {
return this.size() == 0;
} //return the number of the queue's elements;
public int size() {
return m_size;
}
}
链表的需要用到一个结点类 Node.java 代码如下
public class Node {
Object element;
Node next; public Node(Object theElement) {
this(theElement, null);
} public Node(Object theElement, Node n) {
element = theElement;
next = n;
} public Object getElement() {
return element;
} public void setElement(Object element) {
this.element = element;
} public Node getNext() {
return next;
} public void setNext(Node next) {
this.next = next;
}
}
public class Fibonacci {
public static long fib(int n) {
if (n <= 1) return n;
else return fib(n-1) + fib(n-2);
}
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
for (int i = 1; i <= N; i++)
System.out.println(i + ": " + fib(i));
}
}
随便你怎么改
第二个实现堆践?堆栈?
数组实现的堆栈:ArrayStack.java
public class ArrayStack {
Object[] m_elements;
int m_size; public ArrayStack(int len) {
m_elements = new Object[len];
m_size = 0;
} public ArrayStack() {
this(50);
} // insert onto stack
public void push(Object element) {
m_elements[m_size] = element;
m_size++;
} // return and remove the top element
public Object pop() {
if (!this.isEmpty()) {
Object obj = m_elements[m_size - 1];
m_elements[m_size - 1] = null;
m_size--; return obj;
} else {
return null;
}
} // return the top element
public Object top() {
if (!this.isEmpty()) {
return m_elements[m_size - 1];
} else {
return null;
}
} // return 1 --> is empty
// return 0 --> is not empty
public boolean isEmpty() {
return this.size() == 0;
} public int size() {
return m_size;
}
}
看看能不能用...
public static void main(String[] args) throws IOException {
for (int n = 1; n <= 10; n++) {
System.out.println(f(n));
}
} public static int f(int n) {
if (n <= 0) {
return 0;
} else if (n == 1 || n == 2) {
return 1;
}
return f(n - 1) + f(n - 2);
}第二题自己想吧,Java自己就有Stack 你可以用ArrayList 来模拟!