正文
JAVA栈程序代码 栈 java实现
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
用java编写程序,利用线程同步编写一个栈操作程序,包括数据的进栈和出栈。
Stack.java
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Stack {
private int[] data;
private int index;
private Lock lock;
private Condition moreSpace;
private Condition moreEelment;
public Stack(int size){
this.data = new int[size];
this.index = 0;
this.lock = new ReentrantLock();
this.moreSpace = lock.newCondition();
this.moreEelment = lock.newCondition();
}
public void push(int value){
lock.lock();
try {
while(index == data.length){
moreSpace.await();
}
data[index++] = value;
moreEelment.signalAll();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
public int popup(){
lock.lock();
int value = 0;
try {
while(index == 0){
moreEelment.await();
}
value = data[--index];
moreSpace.signalAll();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
return value;
}
}
写入线程 WriteStack.java
import java.util.Random;
public class WriteStack implements Runnable {
private Stack stack;
public WriteStack(Stack stack){
this.stack = stack;
}
@Override
public void run() {
Random r = new Random(System.currentTimeMillis());
for(int i = 0;i 10; i++){
int value = r.nextInt(500);
stack.push(value);
System.out.printf("Write: push %d in stack\n",value);
try {
Thread.sleep(r.nextInt(500));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
读取线程 ReadStack.java
import java.util.Random;
public class ReadStack implements Runnable {
private Stack stack;
public ReadStack(Stack stack){
this.stack = stack;
}
@Override
public void run() {
Random r = new Random(System.currentTimeMillis());
for(int i = 0;i 10; i++){
int value = stack.popup();
System.out.printf("Read: popup an element %d\n",value);
try {
Thread.sleep(r.nextInt(500));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
主测试线程 StackExample.java
public class StackExample {
public static void main(String[] args) throws InterruptedException {
Stack stack = new Stack(5);
WriteStack writeStack = new WriteStack(stack);
ReadStack readStack = new ReadStack(stack);
Thread writeThread = new Thread(writeStack);
Thread readThread = new Thread(readStack);
writeThread.start();
readThread.start();
}
}
怎么用java代码实现栈内存?
使用java.util包中的Stack类创建一个栈对象
public Object push(Object data);输入数据,实现压栈
public Object pop();输出数据,实现弹栈
public boolean empty()判空
public Object peek();查看栈顶元素
可以去查查API嘛
我也是学java的,大家一起进步。
用java代码编写堆栈?
参看: 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用顺序栈实现数制转换 求完整程序!!
用顺序栈实现数制转换的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代码实现栈和队列
import java.util.Scanner;
import java.util.Stack;
/**
* @author Owner
*
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n= sc.nextInt();//3条测试数据数据
StackCharacter stack = null;
while(n!=0){
//从控制台读入一个测试字符串[]() [(])
String str = sc.next();
//如果该输入字符串为奇数JAVA栈程序代码,说明不匹配
if(str.length() % 2 == 1){
System.out.println("No");
}else{
//说明字符是偶数
stack = new StackCharacter();
//遍历第一条测试字符串[]() [(])
for(int i=0;istr.length();i++){
if(stack.isEmpty()){
//如果栈是空的
stack.push(str.charAt(i));
}else if(stack.peek() == '[' str.charAt(i) == ']' || stack.peek() == '(' str.charAt(i) == ')'){
//说明此时栈中字符不是空的,并且符合JAVA栈程序代码,
stack.pop();
}else{
stack.push(str.charAt(i));
}
}
if(stack.isEmpty()){
//如果栈是空的JAVA栈程序代码,说明a href=";tn=44039180_cprfenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3mhDvP10Ln19hrANbP1fk0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3ErHnLP1nsPHDznHTkn1fYPHnz" target="_blank" class="baidu-highlight"括号/a匹配
System.out.println("Yes");
}else{
//说明栈不为空,a href=";tn=44039180_cprfenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3mhDvP10Ln19hrANbP1fk0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3ErHnLP1nsPHDznHTkn1fYPHnz" target="_blank" class="baidu-highlight"括号/a不匹配
System.out.println("No");
}
}
n--;
}
}
}
求助!如何用Java编写一个栈
可以利用LinkedList 来写一个栈. 例如
import java.util.* ;
public class testStack{
private LinkedList list = new LinkedList() ;
public void push(Object o ){
try{
list.addFirst( o ) ;
}catch(Exception e){
}
}
public Object pop(){
return list.removeFirst() ;
}
public Object top() {
return list.getLast() ;
}
public static void main(String[] args){
//code here
testStack s = new testStack() ;
for( int i = 0 ; i10 ;i++){
s.push( i );
}
System.out.println ( s.pop());
System.out.println(s.top());
}
}
你可以好好看看Thinking in JAVA中对集合的讲解。。
关于JAVA栈程序代码和栈 java实现的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。