• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java Stack类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中edu.princeton.cs.algs4.Stack的典型用法代码示例。如果您正苦于以下问题:Java Stack类的具体用法?Java Stack怎么用?Java Stack使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



Stack类属于edu.princeton.cs.algs4包,在下文中一共展示了Stack类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: BruteCollinearPoints

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
public BruteCollinearPoints(Point[] points) {
    if (points == null || hasNull(points) || hasDuplicate(points)) throw new IllegalArgumentException();

    Stack<LineSegment> segmentstack = new Stack<>();
    int N = points.length;

    for (int i = 0; i < N; i++) {
        for (int j = i+1; j < N; j++) {
            for (int k = j+1; k < N; k++) {
                for (int l = k+1; l < N; l++) {
                    Point[] ps = {points[i], points[j], points[k], points[l]};
                    Arrays.sort(ps);
                    if (collinear(ps)) segmentstack.push(new LineSegment(ps[0], ps[3]));
                }
            }
        }
    }

    int size = segmentstack.size();
    segments = new LineSegment[size];
    for (int i = 0; i < size; i++) this.segments[i] = segmentstack.pop();
}
 
开发者ID:SkullTech,项目名称:algorithms-princeton,代码行数:23,代码来源:BruteCollinearPoints.java


示例2: searchValidWords

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
private void searchValidWords(int v, Node x, String prefix, Stack<Integer> visitingDices) {
	if (prefix.length() > 2 && x != null && x.val == 1) {
		validWords.add(prefix);
	}	
	for (int w : adj[v]) {	
		char c = getLetterOnBoard(w);
		if (!marked[w] && x != null && x.next[c -'A'] != null) {
			visitingDices.push(w);
			marked[w] = true;
			if (c == 'Q') {	
				searchValidWords(w, x.next['Q'-'A'].next['U' - 'A'], prefix + "QU", visitingDices);
			}					
			else {
				searchValidWords(w, x.next[c -'A'], prefix + c, visitingDices);
			}
			int index = visitingDices.pop();
			marked[index] = false;			
		} 
	}
}
 
开发者ID:Lxinyuelxy,项目名称:Princeton_Algorithms,代码行数:21,代码来源:BoggleSolver.java


示例3: solveExpressionOnTopOfStack

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
private static void solveExpressionOnTopOfStack(Stack<Double> values, String lastOperand) {
    //Pop, evaluate and push result
    double value = values.pop();
    if (lastOperand.equals("+")) {
        value = values.pop() + value;
    } else if (lastOperand.equals("-")) {
        value = values.pop() - value;
    } else if (lastOperand.equals("*")) {
        value = values.pop() * value;
    } else if (lastOperand.equals("/")) {
        value = values.pop() / value;
    } else if (lastOperand.equals("sqrt")) {
        value = Math.sqrt(value);
    }
    values.push(value);
}
 
开发者ID:reneargento,项目名称:algorithms-sedgewick-wayne,代码行数:17,代码来源:Exercise51_ExpressionEvaluation.java


示例4: main

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
public static void main(String[] args) {
	Stack<String> stack = new Stack<>();
	stack.push("First Item");
	stack.push("Second Item");
	stack.push("Third Item");
	
	Stack<String> copy = copy(stack);
	stack.pop();
	stack.pop();
	
	for (String s : copy) {
		StdOut.println(s);
	}

	StdOut.println("\nExpected: " +
               "\nThird Item\n" +
               "Second Item\n" +
               "First Item");
}
 
开发者ID:reneargento,项目名称:algorithms-sedgewick-wayne,代码行数:20,代码来源:Exercise12.java


示例5: FastCollinearPoints

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
public FastCollinearPoints(Point[] points) {
    if (points == null || hasNull(points) || hasDuplicate(points)) throw new IllegalArgumentException();

    Stack<Point[]> segmentstack = new Stack<>();
    int N = points.length;
    Arrays.sort(points);
    Point[] basePoints = points.clone();

    for (Point base : basePoints) {
        Comparator<Point> slopeorder = base.slopeOrder();
        Arrays.sort(points, slopeorder);

        for (int j = 1; j < N; j++) {
            int c = 1;
            while (j + c < N && collinear(new Point[]{base, points[j], points[j + c]})) { c++; }
            if (c > 2) {
                segmentstack.push(new Point[]{base, points[j + c - 1]});
            }
        }
    }

    int size = segmentstack.size();
    Point[][] segments = new Point[size][2];
    for (int i = 0; i < size; i++) segments[i] = segmentstack.pop();

    this.segments = filterSegments(segments);
}
 
开发者ID:SkullTech,项目名称:algorithms-princeton,代码行数:28,代码来源:FastCollinearPoints.java


示例6: filterSegments

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
private static LineSegment[] filterSegments(Point[][] segments) {
    Stack<LineSegment> filtered = new Stack<>();
    int N = segments.length;

    for (int i = 0, c = 0; i < N; i++, c = 0) {
        Point[] cur = segments[i], comp, longest = cur;
        if (cur == null) { continue; }

        while (c < N) {
            comp = segments[c];

            if (comp != null && isSame(cur, comp)) {
                Point[] ps = {longest[0], longest[1], comp[0], comp[1]};
                Arrays.sort(ps);
                if(longest[0] != ps[0] || longest[1] != ps[3]) longest = new Point[] {ps[0], ps[3]};
                segments[c] = null;
            }

            c++;
        }
        segments[i] = null;
        filtered.push(new LineSegment(longest[0], longest[1]));
    }

    int size = filtered.size();
    LineSegment[] maximals = new LineSegment[size];
    for (int i = 0; i < size; i++) maximals[i] = filtered.pop();
    return maximals;
}
 
开发者ID:SkullTech,项目名称:algorithms-princeton,代码行数:30,代码来源:FastCollinearPoints.java


示例7: main

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
public static void main(String[] args) {
    Stack<String> stack = new Stack<>();

    while (!StdIn.isEmpty()) {
        String s = StdIn.readString();
        if (s.equals("-")) StdOut.print(stack.pop());
        else stack.push(s);
    }
}
 
开发者ID:SkullTech,项目名称:algorithms-princeton,代码行数:10,代码来源:Main.java


示例8: getAllValidWords

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
public Iterable<String> getAllValidWords(BoggleBoard board) {
	this.board = board;
	rows = board.rows();
	cols = board.cols();
	adj = (Bag<Integer>[]) new Bag[rows*cols];	
	
	for (int i = 0; i < rows; i++) {
		for (int j = 0; j < cols; j++) {
			int v = i*cols + j;
			adj[v] = new Bag<Integer>();
			if (checkWIsValid(i-1, j)) adj[v].add((i-1) * cols + j);
			if (checkWIsValid(i+1, j)) adj[v].add((i+1) * cols + j);
			if (checkWIsValid(i, j+1)) adj[v].add(i * cols + j+1);
			if (checkWIsValid(i, j-1)) adj[v].add(i * cols + j-1);
			if (checkWIsValid(i+1, j-1)) adj[v].add((i+1) * cols + j-1);
			if (checkWIsValid(i+1, j+1)) adj[v].add((i+1) * cols + j+1);
			if (checkWIsValid(i-1, j-1)) adj[v].add((i-1) * cols + j-1);
			if (checkWIsValid(i-1, j+1)) adj[v].add((i-1) * cols + j+1);
		}
	}
	validWords = new SET<String>();
	for (int v = 0; v < rows*cols; v++) {
		visitingDices = new Stack<Integer>();
		marked = new boolean[rows*cols];
		visitingDices.push(v);
		marked[v] = true;
		if(getLetterOnBoard(v) == 'Q')
			searchValidWords(v, root.next['Q'-'A'].next['U' - 'A'], "QU", visitingDices);
		else
			searchValidWords(v, root.next[getLetterOnBoard(v)-'A'], getLetterOnBoard(v) + "", visitingDices);
	}
	return validWords;
}
 
开发者ID:Lxinyuelxy,项目名称:Princeton_Algorithms,代码行数:34,代码来源:BoggleSolver.java


示例9: getPath

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
private int[] getPath(Pos T) {
    Stack<Pos> s = new Stack<>();
    for (Pos at = edgeTo[T.y][T.x]; at != null; at = edgeTo[at.y][at.x])
        s.push(at);
    s.pop();
    int[] ret = new int[height()];
    for (int j = 0; !s.isEmpty(); j++)
        ret[j] = s.pop().x;
    return ret;
}
 
开发者ID:robotenique,项目名称:intermediateProgramming,代码行数:11,代码来源:SeamCarver.java


示例10: getPathH

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
private int[] getPathH(Pos T) {
    Stack<Pos> s = new Stack<>();
    for (Pos at = edgeTo[T.y][T.x]; at != null; at = edgeTo[at.y][at.x])
        s.push(at);
    if(!s.isEmpty())
        s.pop();
    int[] ret = new int[width()];
    for (int j = 0; !s.isEmpty(); j++)
        ret[j] = s.pop().y;
    return ret;
}
 
开发者ID:robotenique,项目名称:intermediateProgramming,代码行数:12,代码来源:SeamCarver.java


示例11: invertQueue

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
private static void invertQueue(Queue<String> queue) {
	Stack<String> stack = new Stack<>();
	
	while (!queue.isEmpty()) {
		stack.push(queue.dequeue());
	}
	
	while(!stack.isEmpty()) {
		queue.enqueue(stack.pop());
	}
}
 
开发者ID:reneargento,项目名称:algorithms-sedgewick-wayne,代码行数:12,代码来源:Exercise6.java


示例12: checkAndSolveExpressionWaitingParenteshisResult

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
private static void checkAndSolveExpressionWaitingParenteshisResult(Stack<String> operators, Stack<Double> values) {
    String operatorBeforeExpression = operators.peek();

    if (operatorBeforeExpression.equals("*")
            || operatorBeforeExpression.equals("/")
            || operatorBeforeExpression.equals("sqrt")) {
        operators.pop();
        solveExpressionOnTopOfStack(values, operatorBeforeExpression);
    }
}
 
开发者ID:reneargento,项目名称:algorithms-sedgewick-wayne,代码行数:11,代码来源:Exercise51_ExpressionEvaluation.java


示例13: checkIfExistsAndSolveLowPrecedenceOperation

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
private static void checkIfExistsAndSolveLowPrecedenceOperation(Stack<String> operators, Stack<Double> values) {
    String operatorBeforeExpression = operators.peek();

    if (operatorBeforeExpression.equals("-") || operatorBeforeExpression.equals("+")) {
        operators.pop();
        solveExpressionOnTopOfStack(values, operatorBeforeExpression);
    }

}
 
开发者ID:reneargento,项目名称:algorithms-sedgewick-wayne,代码行数:10,代码来源:Exercise51_ExpressionEvaluation.java


示例14: getInfixExpression

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
private static String getInfixExpression(String input) {
	
	Stack<String> operands = new Stack<>();
	Stack<String> operators = new Stack<>();
	
	String[] inputValues = input.split("\\s");
	
	for (String value : inputValues) {
		if (value.equals("(")){
			//do nothing
		} else if (value.equals("+") 
				|| value.equals("-") 
				|| value.equals("*") 
				|| value.equals("/")) {
			operators.push(value);
		} else if (value.equals(")")) {
			String operator = operators.pop();
			String value2 = operands.pop();
			String value1 = operands.pop();
			
			String subExpression = "( " + value1 + " " + operator + " " + value2 + " )";
			operands.push(subExpression);
		} else {
			operands.push(value);
		}
	}
	
	return operands.pop();
}
 
开发者ID:reneargento,项目名称:algorithms-sedgewick-wayne,代码行数:30,代码来源:Exercise9.java


示例15: isBalanced

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
private boolean isBalanced(String input) {

		char[] parentheses = input.toCharArray();
		Stack<Character> stack = new Stack<>();
		
		for (char parenthesis : parentheses) {
			if (parenthesis == '('
					|| parenthesis == '['
					|| parenthesis == '{'){
				stack.push(parenthesis);
			} else {
				if (stack.isEmpty()) {
					return false;
				}
				
				char firstItem = stack.pop();
				
				if (parenthesis == ')' && firstItem != '('
						|| parenthesis == ']' && firstItem != '['
						|| parenthesis == '}' && firstItem != '{') {
					return false;
				}
			}
		}
		
		return true;
	}
 
开发者ID:reneargento,项目名称:algorithms-sedgewick-wayne,代码行数:28,代码来源:Exercise4.java


示例16: decimalToBinary

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
private static void decimalToBinary(int n) {
	Stack<Integer> stack = new Stack<>();
	
	while (n > 0) {
		stack.push(n % 2);
		n = n / 2;
	}
	
	for (int d : stack) {
		StdOut.print(d);
	}
	StdOut.println();
}
 
开发者ID:reneargento,项目名称:algorithms-sedgewick-wayne,代码行数:14,代码来源:Exercise5.java


示例17: infixToPostfix

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
private static String infixToPostfix(String infixExpression) {
	Stack<String> operands = new Stack<>();
	Stack<String> operators = new Stack<>();
	
	String[] inputValues = infixExpression.split("\\s");
	
	for (String value : inputValues) {
		if (value.equals("(")) {
			//do nothing
		} else if (value.equals("+")
				|| value.equals("-")
				|| value.equals("*")
				|| value.equals("/")) {
			operators.push(value);
		} else if (value.equals(")")) {
			String value2 = operands.pop();
			String value1 = operands.pop();
			String operator = operators.pop();
			
			String newExpression = "( " + value1 + " " + value2 + " " + operator + " )";
			operands.push(newExpression);
		} else {
			operands.push(value);
		}
	}
	
	return operands.pop();
}
 
开发者ID:reneargento,项目名称:algorithms-sedgewick-wayne,代码行数:29,代码来源:Exercise10.java


示例18: Exercise49_QueueWithStacks

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
public Exercise49_QueueWithStacks() {
    head = new Stack<>();
    tail = new Stack<>();
    reverseHead = new Stack<>();
    reverseTail = new Stack<>();
    tempHead = new Stack<>();
    tempTail = new Stack<>();

    size = 0;
    isPerformingRecopy = false;
    waitingSecondRecopyPass = false;
    numberOfItemsDeletedDuringRecopy = 0;
}
 
开发者ID:reneargento,项目名称:algorithms-sedgewick-wayne,代码行数:14,代码来源:Exercise49_QueueWithStacks.java


示例19: performSecondRecopyPass

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
private void performSecondRecopyPass() {
    waitingSecondRecopyPass = false;

    while (reverseHead.size() > numberOfItemsDeletedDuringRecopy) {
        reverseTail.push(reverseHead.pop());
    }

    Stack<Item> temp = head;
    head = reverseTail;
    reverseTail = temp;

    Stack<Item> temp2 = tail;
    tail = tempTail;
    tempTail = temp2;

    //Clear reverseHead and tempHead stacks
    while (reverseHead.size() > 0){
        reverseHead.pop();
    }
    while (tempHead.size() > 0) {
        tempHead.pop();
    }
    numberOfItemsDeletedDuringRecopy = 0;

    //Recopy process done
    isPerformingRecopy = false;
}
 
开发者ID:reneargento,项目名称:algorithms-sedgewick-wayne,代码行数:28,代码来源:Exercise49_QueueWithStacks.java


示例20: evaluatePostfix

import edu.princeton.cs.algs4.Stack; //导入依赖的package包/类
private static int evaluatePostfix(String postfixExpression) {
	Stack<String> operands = new Stack<>();
	Stack<String> operators = new Stack<>();
	
	String[] values = postfixExpression.split("\\s");
	for (String s : values) {
		if (s.equals("(")) {
			//do nothing
		} else if (s.equals("+")
				|| s.equals("-")
				|| s.equals("*")
				|| s.equals("/")) {
			operators.push(s);
		} else if (s.equals(")")) {
			int operand2 = Integer.parseInt(operands.pop());
			int operand1 = Integer.parseInt(operands.pop());
			String operator = operators.pop();
			
			int result = 0;
			if (operator.equals("+")) {
				result = operand1 + operand2;
			} else if (operator.equals("-")) {
				result = operand1 - operand2;
			} else if (operator.equals("*")) {
				result = operand1 * operand2;
			} else if (operator.equals("/")) {
				result = operand1 / operand2;
			}
			operands.push(String.valueOf(result));
		} else {
			operands.push(s);
		}
	}
	
	return Integer.parseInt(operands.pop());
}
 
开发者ID:reneargento,项目名称:algorithms-sedgewick-wayne,代码行数:37,代码来源:Exercise11.java



注:本文中的edu.princeton.cs.algs4.Stack类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java ValidationComplete类代码示例发布时间:2022-05-22
下一篇:
Java RepositoryBrowser类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap