「栈操作java」栈操作指令

博主:adminadmin 2023-01-12 19:03:05 318

本篇文章给大家谈谈栈操作java,以及栈操作指令对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java中栈的使用

和C++里面一样,有入栈,弹栈,查找函数

import java.util.*;(引入包含栈类的头文件)

相关函数介绍

boolean empty()

测试堆栈是否为空。

E peek()

查看堆栈顶部的对象,但不从堆栈中移除它。

E pop()

移除堆栈顶部的对象,并作为此函数的值返回该对象。

E push(E item)

把项压入堆栈顶部。

int search(Object o)

返回对象在堆栈中的位置,以 1 为基数。

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;

}

}

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

//这是JDK提供的栈

import java.util.Stack;

public class UsingStack {

public static void main(String[] args) {

//构造栈对象,使用类型限制,只能存储Integer数据

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

}

}

//这是我写的顺序结构的栈

import java.util.EmptyStackException;

import java.util.Vector;

public class UsingStack{

public static void main(String[] args){

//构造栈对象,使用类型限制,只能存储Integer数据

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{

/**

* 构造方法

*/

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;

}

用java实现数据结构“栈

Java栈的实现

public

class

MyStack

{

//定义一个堆栈类

int[]

array;

//用int数组来保存数据,根据需要可以换类型

int

s_size;

//定义堆栈的宽度

public

MyStack(int

i){

//定义一个带参数构造器

array=new

int[i];

//动态定义数组的长度

s_size=0;

//堆栈的默认宽度为0

}

public

MyStack(){

//默认构造器

this(50);

//默认构造器可容纳50个元素

}

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];

//用中间变量保存栈顶的元素

array[s_size-1]=0;

//取完元素该位置设为0

s_size--;

//栈的大小减1

return

t;

//返回栈顶元素

}else{

System.out.println("This

stack

is

empty");

//当栈为空时显示提示信息,返回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());

}

}

关于栈操作java和栈操作指令的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。