使用java.util包中的Stack類創(chuàng)建一個(gè)棧對象
站在用戶的角度思考問題,與客戶深入溝通,找到汕頭網(wǎng)站設(shè)計(jì)與汕頭網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋汕頭地區(qū)。
public Object push(Object data);輸入數(shù)據(jù),實(shí)現(xiàn)壓棧
public Object pop();輸出數(shù)據(jù),實(shí)現(xiàn)彈棧
public boolean empty()判空
public Object peek();查看棧頂元素
可以去查查API嘛
我也是學(xué)java的,大家一起進(jìn)步。
//這是JDK提供的棧
import java.util.Stack;
public class UsingStack {
public static void main(String[] args) {
//構(gòu)造棧對象,使用類型限制,只能存儲Integer數(shù)據(jù)
StackInteger s = new StackInteger();
//1、2、3依次入棧
s.push(1);
s.push(2);
s.push(3);
//3、2、1依次出棧
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
}
}
//這是我寫的順序結(jié)構(gòu)的棧
import java.util.EmptyStackException;
import java.util.Vector;
public class UsingStack{
public static void main(String[] args){
//構(gòu)造棧對象,使用類型限制,只能存儲Integer數(shù)據(jù)
MyStackInteger s = new MyStackInteger();
//1、2、3依次入棧
s.push(1);
s.push(2);
s.push(3);
//3、2、1依次出棧
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
}
}
/**
* 棧類
* @author developer_05
* @param T
*/
class MyStackT extends VectorT{
/**
* 構(gòu)造方法
*/
public MyStack(){
}
/**
* 入棧方法
* @param item 待入棧的元素
* @return 返回入棧的元素
*/
public T push(T item) {
addElement(item);
return item;
}
/**
* 出棧方法(同步處理)
* @return 返回出棧元素
*/
public synchronized T pop() {
T obj;
int len = size();
if (len == 0)
throw new EmptyStackException();
obj = elementAt(len - 1);
removeElementAt(len - 1);
return obj;
}
/**
* 判斷棧是否為空的方法
* @return 返回true(???或false(棧非空)
*/
public boolean empty() {
return size() == 0;
}
private static final long serialVersionUID = 1L;
}
#includeiostream.h
using namespace std;
const int MAX=5; //假定棧中最多保存5個(gè)數(shù)據(jù)
//定義名為stack的類,其具有棧功能
class stack {
//數(shù)據(jù)成員
float num[MAX]; //存放棧數(shù)據(jù)的數(shù)組
int top; //指示棧頂位置的變量
public:
//成員函數(shù)
void init(void) { top=0; } //初始化函數(shù)
void push(float x) //入棧函數(shù)
{
if (top==MAX){
cout"Stack is full !"endl;
return;
};
num[top]=x;
top++;
}
float pop(void) //出棧函數(shù)
{
top--;
if (top0){
cout"Stack is underflow !"endl;
return 0;
};
return num[top];
}
}
//以下是main()函數(shù),其用stack類創(chuàng)建棧對象,并使用了這些對象
main(void)
{
//聲明變量和對象
int i;
float x;
stack a,b; //聲明(創(chuàng)建)棧對象
//以下對棧對象初始化
a.init();
b.init();
//以下利用循環(huán)和push()成員函數(shù)將2,4,6,8,10依次入a棧對象
for (i=1; i=MAX; i++)
a.push(2*i);
//以下利用循環(huán)和pop()成員函數(shù)依次彈出a棧中的數(shù)據(jù)并顯示
for (i=1; i=MAX; i++)
couta.pop()" ";
coutendl;
//以下利用循環(huán)和push()成員函數(shù)將鍵盤輸入的數(shù)據(jù)依次入b棧
cout"Please input five numbers."endl;
for (i=1; i=MAX; i++) {
cinx;
b.push(x);
}
//以下利用循環(huán)和pop()成員函數(shù)依次彈出b棧中的數(shù)據(jù)并顯示
for (i=1; i=MAX; i++)
coutb.pop()" ";
}
參看: 1 import java.util.*; 2 3 public class TestStack { 4 public static void main(String[] args) { 5 Stack stack = new Stack(); 6 7 for(int i = 0; i 10; i++) { 8 stack.push(new Integer(i)); 9 }1011 if(!stack.empty()) {12 System.out.println(stack.pop());13 }14 }15 }
Java棧的實(shí)現(xiàn)
public class MyStack { //定義一個(gè)堆棧類
int[] array; //用int數(shù)組來保存數(shù)據(jù),根據(jù)需要可以換類型
int s_size; //定義堆棧的寬度
public MyStack(int i){ //定義一個(gè)帶參數(shù)構(gòu)造器
array=new int[i]; //動(dòng)態(tài)定義數(shù)組的長度
s_size=0; //堆棧的默認(rèn)寬度為0
}
public MyStack(){ //默認(rèn)構(gòu)造器
this(50); //默認(rèn)構(gòu)造器可容納50個(gè)元素
}
public void push(int i){ //壓棧
array[this.s_size]=i;
this.s_size++;
}
public int pop(){ //從堆棧中取元素,從棧頂開始取
if(this.s_size!=0){
int t=array[s_size-1]; //用中間變量保存棧頂?shù)脑?/p>
array[s_size-1]=0; //取完元素該位置設(shè)為0
s_size--; //棧的大小減1
return t; //返回棧頂元素
}else{
System.out.println("This stack is empty"); //當(dāng)棧為空時(shí)顯示提示信息,返回0
return 0;
}
}
public boolean isEmpty(){ //判斷棧是否為空
return this.s_size==0;
}
public int top(){ //從棧頂取值,功能和 pop() 方法一樣
if(!this.isEmpty()){
int t=array[this.s_size-1];
array[this.s_size-1]=0;
this.s_size--;
return t;
}else{
System.out.println("This stack is empty!");
return 0;
}
}
public void printAll(){ //打印出堆棧中的所有元素的值,不是取出,元素依然在堆棧里
if(!this.isEmpty()){
for(int i=this.s_size - 1;i=0;i--){
System.out.println(array[i]);
}
}
}
//下面是測試代碼
public static void main(String[] args){
MyStack stack=new MyStack();
stack.push(4);
stack.push(5);
stack.push(6);
stack.push(7);
//System.out.println(stack.isEmpty());
stack.printAll();
System.out.println("===========");
System.out.println(stack.top());
System.out.println(stack.top());
System.out.println(stack.top());
System.out.println(stack.top());
System.out.println(stack.top());
}
}