栈(Stack)是一种以“后进先出”的方式存放数据的数据结构。设计实现一个简单的栈来存放整型,完成如下功能:
方法 | 功能 |
---|---|
StackOfIntegers() | 构建一个默认容量为16的空栈 |
StackOfIntegers(capacity: int) | 构建一个指定容量的空栈 |
empty(): boolean | 如果栈为空则返回true |
peek(): int | 返回栈顶的整数而不从栈中删除该数 |
push(value: int): void | 将一个整数存储到栈顶 |
pop(): int | 删除栈顶整数并返回它 |
getSize(): int | 返回栈中元素的个数 |
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
import java.util.Scanner;
public class Main {
public static void main(String[
Scanner input = new Scanner(System.in);
int l = input.nextInt();
int first = input.nextInt();
input.close();
StackOfIntegers stack1 = new StackOfIntegers();
StackOfIntegers stack = new StackOfIntegers(l);
stack1.push(first);
System.out.println(stack1.getsize() + " " + stack1.peek());
for( int i = 0; i < l; i++)
stack.push(i);
while(!stack.empty())
System.out.print(stack.pop() + " ");
}
}
/* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:
22
49
结尾无空行
输出样例:
在这里给出相应的输出。例如:
16 49
21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
结尾无空行
答案代码如下:
class StackOfIntegers {
int top=0,rear=0;//将数组下标设置成成员变量
int[] a;//定义一个数组,在数组内 模拟 栈 先进后出 的操作
StackOfIntegers(){
top=0;
rear=0;
a=new int[16];
}//栈类的无参构造,根据题目要求,默认栈的大小为16。栈的头下标和尾下标均为0
StackOfIntegers(int i){
top=0;
rear=0;
a=new int[i];
}//栈类的带参构造,参数为一个整型数值,代表数组大小,即栈的容量
public void push(int c) {
this.a[top]=c;
this.top=this.top+1;
}//元素入栈:若一个元素入栈,头下标不变仍为0,尾下标+1,当栈不为空时,注意栈顶元素始终是尾下标的前一个下标所代表的元素
public int getsize() {
return this.a.length;
}//得到数组的元素个数,即栈中的元素个数
public int peek() {
if(empty()!=true)
return (a[top-1]);
else
return 0;
}//取出栈顶元素的数值,不对栈进行任何操作
public boolean empty() {
if(top==rear)
return true;
else
return false;
}//判断栈是否为空(即判断数组中是否含有元素)
public int pop() {
if(this.empty()!=true)
{
int g=a[top-1];
a[top-1]=0;
top=top-1;
return g;
}
else {
return 0;
}
}//出栈操作,若栈不为空,则返回栈顶元素的值并且赋0(代表删除元素值的意思),再使尾下标-1,改变栈顶元素
}
本题设计到了数据结构中的线性表中的栈这一逻辑结构,栈有线性表的全部特点并且栈的元素遵循先进后出的原则,与队列的元素遵循先进先出的原则相反,后序再详细讨论数据结构。