데이터 구조 응용 회고 의 Stack (1) 디지털 변환
4638 단어 stack
본 고 는 stack 의 기본 조작 을 간단하게 실현 하고 디지털 변환 코드 를 썼 다.
stack 코드
package com.xx.dataStructure.stack;
public class Stack<T> {
static final int defaultSize = 10;
private Object [] data ;
private int maxSize;
private int top;
public Stack(){
this(defaultSize);
}
public Stack(int maxSize){
this.maxSize = maxSize;
data = new Object[maxSize];
}
public void init(){
for(Object s : data){
s = null;
}
top = 0;
}
public void clear(){
while(!isEmpty()){
try {
pop();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public boolean isFull(){
return (top == (maxSize - 1));
}
public boolean isEmpty(){
return (top == 0 );
}
public Stack<T> push(T t) throws Exception{
if (isFull()) {
throw new Exception("StackOverFlow");
}
data[top] = t;
top++;
return this;
}
@SuppressWarnings("unchecked")
public T pop() throws Exception {
if (isEmpty())
throw new Exception();
top--;
T t = (T)data[top];
data[top] = null;
return t;
}
public int getLength(){
return top;
}
public void traverse(){
for(int i = top -1 ; i >= 0; i --){
System.out.print(data[i] + ",");
}
System.out.println("");
}
public static void main(String [] args){
Stack<Integer> stack = new Stack<Integer>(5);
stack.init();
try {
stack.push(1).push(2).push(3).push(4);
stack.traverse();
System.out.println(stack.getLength());
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.xx.dataStructure.stack;
public class NumberTranslate {
static Stack<Character> stack = new Stack<Character>(100);
{
stack.init();
}
static final Character [] CHAR = {
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
};
static final String NUMBRRSTRING = "0123456789ABCDEF";
/**
* @param args
*/
public static void main(String[] args) {
try {
System.out.println(trans10to8(10));
System.out.println(trans10to16(160));
System.out.println(trans16to10("FF"));
} catch (Exception e) {
e.printStackTrace();
}
}
//
static long square(int x,int n){
long result = 0L;
if (n == 0)
return 1L;
if (n == 1)
return x;
if (n % 2 == 0 ){
long s = square(x,n/2);
result = s*s;
}
if (n % 2 == 1){
long s = square(x,(n-1)/2);
result = s*s*x;
}
return result;
}
static long trans16to10(String number) throws Exception {
char[] ss = number.toCharArray();
long result = 0;
for(int i = 0; i < ss.length; i++){
result += NUMBRRSTRING.indexOf(ss[i])*square(16,ss.length -i -1);
}
return result;
}
static String trans10to8(long number) throws Exception{
long s = number;
while(s / 8 > 0){
stack.push(CHAR[(int)s%8]);
s = s / 8;
}
s = s % 8 ;
stack.push(CHAR[(int)s]);
StringBuffer buf = new StringBuffer();
while(!stack.isEmpty()){
buf.append(stack.pop());
}
return buf.toString();
}
static String trans10to16(long number) throws Exception{
long s = number;
while(s / 16 > 0){
stack.push(CHAR[ (int)s % 16]);
s = s / 16;
}
stack.push(CHAR[ (int)s % 16]);
StringBuffer buf = new StringBuffer();
while(!stack.isEmpty()){
buf.append(stack.pop());
}
return buf.toString();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
초보자를 위한 SLL을 사용한 스택linkedlist를 사용하여 스택을 구현하는 코드를 작성해 보겠습니다. 전제 조건: linkedlist 작업에 대한 간략한 지식. 시작하기 전에 Stack이 무엇인지 알려주세요. 스택은 LIFO 원칙을 따르는 데이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.