资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

java代码实现入顺序栈 java顺序结构

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

public interface MyStackT {

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

/**

 * 判断栈是否为空

 */

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如何实现出栈入栈并获取栈中最小值的程序

你得明白栈的定义。代码执行的时候是执行一个方法,执行完,返回方法的上一个代码块继续往下执行后面的内容。这样的话是不是就是一个栈结构了?先进后出。方法一边执行,一边往栈里面存数据,等执行完了就取出数据(取出的是返回值,是最后一个存进去的 栈结构是后进先出),然后执行外面的代码。这么说你可能不明白,我给你举个例子。

int sub(int a,int b){

return a+b;

}

int c = sub(2,3);//注意执行这条语句的时候是不是执行了一个方法?

//那么语句执行的时候是要从左往右执行的对吧,但是事实的逻辑却是先算出来sub(2,3)这个方

//法的返回值,然后再把返回值(5)赋值给 c ,那么这个怎么实现,肯定是一个栈的数据结构,编译的时候先把”int c = “入栈,然后再把 sub(2,3),入栈,执行的时候,从栈里面取,取的第一个肯定是sub(2,3)吧?于是就计算出等于5,继续取,取出了int c =,然后就和5对接上了,就把值赋给c了。这只是一个小例子。

道理是这样,但是具体的存取可不是这样的哦。具体的存取应该分的非常细腻,应该是按照java语法的最小单位来往栈里存取的。说白了一句话,程序运行的时候的先后顺序是跟人大脑想问题的顺序一样的,但是代码不是按照这样的顺序写的(从左到右),于是就用栈结构来达到这样的效果。

这么说,明白了吗?

java用顺序栈实现数制转换 求完整程序!!

用顺序栈实现数制转换的Java程序如下:

import java.util.Scanner;

import java.util.Stack;

public class jinzhi3 {

public static void main(String arg[]){

Scanner y=new Scanner(System.in);

System.out.println("请输入十进制数");

int b=y.nextInt();

jinzhi3 j=new jinzhi3();

j.ErJinZhi(b);

j.BaJinZhi(b);

j.ShiLiuJinZhi(b);

}

//转化成二进制

void ErJinZhi(int a){

StackInteger s=new StackInteger();

String str="";

while(a0)

{

s.push(a%2);

a=a/2;

}

while(!s.isEmpty()){

str=str+s.pop();

}

System.out.println("二进制是"+str);

//转化成八进制

void BaJinZhi(int a){

StackInteger s=new StackInteger();

String str="";

while(a0)

{

s.push(a%8);

a=a/8;

}

while(!s.isEmpty()){

str=str+s.pop();

}

System.out.println("八进制是"+str);

}

//转化成十六进制

void ShiLiuJinZhi(int a){

int c=0;

String str="";

StackCharacter s=new StackCharacter();

while(a0)

{

c=a%16;

switch(c){

case(10):s.push('A');break;

case(11):s.push('B');break;

case(12):s.push('C');break;

case(13):s.push('D');break;

case(14):s.push('E');break;

case(15):s.push('F');break;

default:s.push((char)(a%16+48));

}

a=a/16;

}

while(!s.isEmpty()){

str=str+s.pop();

}

System.out.println("十六进制是"+str);

}

}

运行结果:

请输入十进制数

28

二进制是11100

八进制是34

十六进制是1C


当前标题:java代码实现入顺序栈 java顺序结构
标题路径:http://cdkjz.cn/article/ddeiggj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220