java顺序栈的实现代码 顺序栈的程序实现

跪求用JAVA语言实现一个栈和一个队列,数据元素为double型。。。具体在问题补充里

public interface MyStackT {

创新互联于2013年创立,是专业互联网技术服务公司,拥有项目网站设计、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元天等做网站,已为上家服务,为天等各地企业和个人服务,联系电话:028-86922220

/**

 * 判断栈是否为空

 */

boolean isEmpty();

/**

 * 清空栈

 */

void clear();

/**

 * 栈的长度

 */

int length();

/**

 * 数据入栈

 */

boolean push(T data);

/**

 * 数据出栈

 */

T pop();

}

public class MyArrayStackT implements MyStackT {

private Object[] objs = new Object[16];

private int size = 0;

@Override

public boolean isEmpty() {

return size == 0;

}

@Override

public void clear() {

// 将数组中的数据置为null, 方便GC进行回收

for (int i = 0; i  size; i++) {

objs[size] = null;

}

size = 0;

}

@Override

public int length() {

return size;

}

@Override

public boolean push(T data) {

// 判断是否需要进行数组扩容

if (size = objs.length) {

resize();

}

objs[size++] = data;

return true;

}

/**

 * 数组扩容

 */

private void resize() {

Object[] temp = new Object[objs.length * 3 / 2 + 1];

for (int i = 0; i  size; i++) {

temp[i] = objs[i];

objs[i] = null;

}

objs = temp;

}

@SuppressWarnings("unchecked")

@Override

public T pop() {

if (size == 0) {

return null;

}

return (T) objs[--size];

}

@Override

public String toString() {

StringBuilder sb = new StringBuilder();

sb.append("MyArrayStack: [");

for (int i = 0; i  size; i++) {

sb.append(objs[i].toString());

if (i != size - 1) {

sb.append(", ");

}

}

sb.append("]");

return sb.toString();

}

}

//栈的链表实现

public class MyLinkedStackT implements MyStackT {

/**

 * 栈顶指针

 */

private Node top;

/**

 * 栈的长度

 */

private int size;

public MyLinkedStack() {

top = null;

size = 0;

}

@Override

public boolean isEmpty() {

return size == 0;

}

@Override

public void clear() {

top = null;

size = 0;

}

@Override

public int length() {

return size;

}

@Override

public boolean push(T data) {

Node node = new Node();

node.data = data;

node.pre = top;

// 改变栈顶指针

top = node;

size++;

return true;

}

@Override

public T pop() {

if (top != null) {

Node node = top;

// 改变栈顶指针

top = top.pre;

size--;

return node.data;

}

return null;

}

/**

 * 将数据封装成结点

 */

private final class Node {

private Node pre;

private T data;

}

}

怎么用java代码实现栈内存?

使用java.util包中的Stack类创建一个栈对象

public Object push(Object data);输入数据,实现压栈

public Object pop();输出数据,实现弹栈

public boolean empty()判空

public Object peek();查看栈顶元素

可以去查查API嘛

我也是学java的,大家一起进步。

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;

}

关于顺序栈的实现

#include"stdio.h"

#includeiostream.h

#includemalloc.h

#includestring.h

#define STACK_INIT_SIZE 200

struct Stack{

int *base;

int *top;

}sq;

void InitStack(Stack s){

s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));

s.top=s.base;

};

void Push(Stack s,int e){

*s.top=e;

s.top++;

};

int Pop(Stack s){//设从键盘输入一整数的序列:a1,a2,a3,……an,

s.top--;

return *s.top;//试编写算法实现:用栈结构存储输入的整数,

};//当ai≠—1时,将ai进栈,当当ai≠—1时,将所有栈元素出

void main()//栈。算法应对异常情况(如栈满等)给出相应的信息》

{

Stack S1,S2;

InitStack(S1);

InitStack(S2);

int a[10];

int i=0,b;

while(i10){

cout"请输入第"i"个元素"endl;

cina[i];

if(a[i]==-1)

break;

Push(S1,a[i]);

i++;}

while(S1.top!=S1.base){

b=Pop(S1);

coutbendl;}

}

上次把类型定义错了 以前是只能使用小于128的 现在把类型改成int了就使用任何数字了

栈与队列的实现(java)

import java.util.Stack;

public class Translate {

//程序入口

public static void main(String[]args){

int n = Translate.translate(3467,8);

System.out.println("结果是:"+n);

}

public static int translate(int number, int base_num) {

//使用栈

StackIntegerstack = new StackInteger();

while(number0){

//压栈

stack.push(number % base_num);

number /= base_num;

}

int n = stack.size();

int val=0;

//依次出栈并合成结果(用我们熟悉的十进制表示,所以乘以10)

for(int i=0;in;i++){

val=val*10+stack.pop();

}

return val;

}

}

用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顺序栈的实现代码 顺序栈的程序实现
网页链接:http://scyanting.com/article/hhspgs.html