导航:首页 > 编程语言 > 用java写一个栈

用java写一个栈

发布时间:2024-04-17 13:31:28

1. 我要用java实现一个栈,基本操作就是出栈入栈。请问如何实现效率比较高。

//这是JDK提供的栈

import java.util.Stack;

public class UsingStack {
public static void main(String[] args) {
//构造栈对象,使用类型限制,只能存储Integer数据
Stack<Integer> s = new Stack<Integer>();

//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());
}
}

//这是我写的顺序结构的栈
import java.util.EmptyStackException;
import java.util.Vector;

public class UsingStack{
public static void main(String[] args){
//构造栈对象,使用类型限制,只能存储Integer数据
MyStack<Integer> s = new MyStack<Integer>();

//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 MyStack<T> extends Vector<T>{
/**
* 构造方法
*/
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;
}

2. 用java编写出来:用数组实现一个栈

} } 使用java中Stack类.跟数据结构中的栈是一个意思。 不用Stack,直接new一个长度为10的数组就可以了

3. java 创建栈问题

1.如果我要调用来栈的操作是不源是只要在开头
import java.util.*;
就可以了。
具体来说是导入import java.util.Stack;就可以了。
2.怎样用stack创建一个存放整型栈和存放字符的栈?
Stack<Integer> s = new Stack<Integer>(); 只能装整形的栈
Stack<Character> s = new Stack<Character>(); 只能装字符型的栈
3.栈用完后怎么销毁?
关于销毁的问题,自己不用手动销毁,java有自动回收机制会自动回收没用的栈

4. JAVA编程实现堆栈出栈操作!

数组实现的堆栈: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 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;
}
}

5. 用java编一个栈的插入删除和一个队列的插入删除 急

给你个栈的例子 后进先出
队列稍微改一下就行 先进先内出
class MyStack {

private int[] data;
private int top;//栈顶指针容

public MyStack(){
this(10);
}
public MyStack(int size){
this.data=new int[size];
this.top=0;
}
//入栈
public boolean push(int element){
if(top<this.data.length){
this.data[top++]=element;
return true;
}
return false;
}
//出栈
public int pop(){
if(top>0){
return data[--top];
}
return -1;
}

6. 1. 鐢–++鎴朖ava鍐欎竴涓鍏充簬鍫嗘爤鐨勭被鎻忚堪锛屽苟涓哄爢鏍堢殑鍘嬫爤锛坧ush锛夊拰鍑烘爤锛坧op锛夋搷浣滅紪鍐欐柟娉

#include<iostream.h>
using namespace std;
const int MAX=5; //鍋囧畾鏍堜腑鏈澶氫繚瀛5涓鏁版嵁
//瀹氫箟鍚嶄负stack鐨勭被锛屽叾鍏锋湁鏍堝姛鑳
class stack {
//鏁版嵁鎴愬憳
float num[MAX]; //瀛樻斁鏍堟暟鎹鐨勬暟缁
int top; //鎸囩ず鏍堥《浣嶇疆鐨勫彉閲
public:
//鎴愬憳鍑芥暟
void init(void) { top=0; } //鍒濆嬪寲鍑芥暟
void push(float x) //鍏ユ爤鍑芥暟
{
if (top==MAX){
cout<<"Stack is full !"<<endl;
return;
};
num[top]=x;
top++;
}
float pop(void) //鍑烘爤鍑芥暟
{
top--;
if (top<0){
cout<<"Stack is underflow !"<<endl;
return 0;
};
return num[top];
}
}
//浠ヤ笅鏄痬ain()鍑芥暟锛屽叾鐢╯tack绫诲垱寤烘爤瀵硅薄锛屽苟浣跨敤浜嗚繖浜涘硅薄
main(void)
{
//澹版槑鍙橀噺鍜屽硅薄
int i;
float x;
stack a,b; //澹版槑(鍒涘缓)鏍堝硅薄
//浠ヤ笅瀵规爤瀵硅薄鍒濆嬪寲
a.init();
b.init();
//浠ヤ笅鍒╃敤寰鐜鍜宲ush()鎴愬憳鍑芥暟灏2,4,6,8,10渚濇″叆a鏍堝硅薄
for (i=1; i<=MAX; i++)
a.push(2*i);
//浠ヤ笅鍒╃敤寰鐜鍜宲op()鎴愬憳鍑芥暟渚濇″脊鍑篴鏍堜腑鐨勬暟鎹骞舵樉绀
for (i=1; i<=MAX; i++)
cout<<a.pop()<<" ";
cout<<endl;
//浠ヤ笅鍒╃敤寰鐜鍜宲ush()鎴愬憳鍑芥暟灏嗛敭鐩樿緭鍏ョ殑鏁版嵁渚濇″叆b鏍
cout<<"Please input five numbers."<<endl;
for (i=1; i<=MAX; i++) {
cin>>x;
b.push(x);
}
//浠ヤ笅鍒╃敤寰鐜鍜宲op()鎴愬憳鍑芥暟渚濇″脊鍑篵鏍堜腑鐨勬暟鎹骞舵樉绀
for (i=1; i<=MAX; i++)
cout<<b.pop()<<" ";
}

阅读全文

与用java写一个栈相关的资料

热点内容
超级大数据txt下载 浏览:801
计算机学完编程之后学什么 浏览:181
哪些属于数据采集工具 浏览:45
access最大数据库 浏览:5
苹果5s怎么设置usb调试 浏览:197
重庆会展收入数据在哪里找得 浏览:364
万能钥匙扫一扫的版本 浏览:888
移动叔叔一键root工具电脑版 浏览:493
如何设计求和编程 浏览:762
mac双系统win可以自己升级吗 浏览:590
学籍管理系统程序 浏览:527
怎样升级1032beta5 浏览:484
如何重启网络适配器 浏览:602
gentoolinux下载 浏览:327
系统数据里没有bilibili的文件夹 浏览:809
大数据在医院的应用 浏览:568
大数据铁路安全问题 浏览:676
带圆弧的螺纹怎么编程 浏览:378
mw文件如何转换为pdf格式 浏览:556
新片场app怎么申请加入创作人 浏览:729

友情链接