java使用链栈实现数制转换

java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html

将前面java实现链栈的代码稍作修改:

package linkedstack;

public class LinkStack {

	private Element base;
	private Element top;

	class Element
	{
		public Object data;
		public Element next;
	}

	/**
	 * 初始化栈
	 * */
	public void initStack()
	{
		top = new Element();
		base = new Element();
		top.data=null;
		top.next=base;
		base.data=null;
		base.next=null;
	}

	/**
	 * 入栈
	 * */
	public void push(Object o)
	{
		Element e = new Element();
		e.data = o;
		if(top.next==base)//第一次入栈操作
		{
			e.next=base;
			top.next=e;
		}else
		{
			e.next=top.next;
			top.next=e;
		}

	}

	/**
	 * 出栈
	 * */
	public Object pop()
	{
		Object o = null;
		if(top.next==base)
		{
			System.out.println("栈中没有元素!");
			return o;
		}else
		{
			o = top.next.data;
			//System.out.println("出栈操作"+o);
			top.next=top.next.next;
		}
		return o;
	}
	/**
	 * 判断栈是否为空
	 * */
	public Boolean isEmpty()
	{
		if(top.next==base)
		{
			return true;
		}
		return false;
	}
	/**
	 * 打印栈
	 * */
	public void print()
	{
		System.out.print("打印栈:");
		Element temp =top;
		while(temp.next!=base)
		{
			System.out.print(temp.next.data+"\t");
			temp =temp.next;
		}
		System.out.println();
	}
}

  

java实现数制转换的类的代码:

package stackapplication;

import linkedstack.LinkStack;

public class Conversion {

	public static void main(String[] args) {
		LinkStack lStack = new LinkStack();
		lStack.initStack();
		int N = 100;//原始十进制数
		int X = 2;//要转化成X进制数
		while(N!=0)
		{
			lStack.push(N%X);
			N=N/X;
		}
		while(!lStack.isEmpty())
		{
			System.out.print(lStack.pop());
		}

	}
}

  

时间: 2024-12-20 18:47:39

java使用链栈实现数制转换的相关文章

java实现链栈

前面学习了java实现顺序栈:http://www.cnblogs.com/lixiaolun/p/4644134.html 接下来,学习java实现链栈. 链栈类代码: package linkedstack; public class LinkStack { private Element base; private Element top; class Element { public Object data; public Element next; } /** * 初始化栈 * */

栈的Java实现--链栈

栈的Java实现--链栈 链栈,顾名思义,就是以链表的形式实现的栈的相关操作,其实是功能弱化了的链表,如果已经阅读过链表的实现代码,那么链栈的实现显得更为容易. 链栈的基本结构: 链栈的入栈操作: 让top引用指向新的节点,新节点的next指向原来的top 记录栈内元素个数的size+1 链栈的出栈操作: top引用指向原栈顶元素的下一个元素(top.next),并释放原栈顶元素的引用 记录栈内元素个数的size-1 链栈的Java实现代码: package com.liuhao.DataStr

java 实现链栈存储

package com.learn.algorithm.linkStack; /** * 链栈实现 * @author Jiekun.Cui * @param <T> */ public class LinkStack<T> { private LinkStack<T>.Node<T> top = new Node<T>(); private int size=0; /** * 进栈 * @param t * @return ; */ publi

DS之栈实现数制转换(补充)

在计算机进制转换的时候,最常用的就是二进制,八进制,十进制,和十六进制,以及它们之间的转换.而在现实生活中最常用的十进制数是我们一贯的作风.在计算机系统最常用的是二进制,十六进制,八进制. 在上一次使用顺序栈实现进制转换的时候,一直在考虑十六进制的问题,最终也没有实现,就收手了.过了一天,再次尝试着看代码,也问了好多的同学,都不会,他们所做的只是进行十进制以下的进制转换,我考虑的十六进制没有人解释.白天一直在想是哪里出错了,输出的结果为什么会多出多余的数字,知道问题出在进制转换函数,而且在出栈的

7、蛤蟆的数据结构笔记之七栈的应用之数制转换

7.蛤蟆的数据结构笔记之七栈的应用之数制转换 本篇名言:"人生意义的大小,不在乎外界的变迁,而在乎内心的经验." 上面两篇中我们实现了链栈和链队列,接下去哦我们看看实际中栈的应用场景.本次来看下栈在数制转换的作用. 欢迎转载,转载请标明出处: 1.  原理介绍 十进制N和其他进制数的转换时计算机实现计算的基本问题.简单算法如下: N=(N div d )x d + N modd 2.  实现 2.1         定义结构体 定义堆栈的结构体 typedef struct { int

数制转换

进制的转换可以借助强大的BigInteger,非常的方便. new java.math.BigInteger(num, from).toString(to); 表示num要转换的数从from源数的进制 转换成to的进制. 题目描述 求任意两个不同进制非负整数的转换(2进制-16进制),所给整数在long所能表达的范围之内.     不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F). 输入描述:     输入只有一行,包含三个整数a,n,

数据结构实践——数制转换(栈)

本文是针对数据结构基础系列网络课程(3):栈和队列的实现项目. [项目 - 数制转换] 把十进制的整数转换为任一进制数输出.请利用栈设计算法,并实现程序. 提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果.这里的"逆序",意味着后产生的余数,会先输出,后进先出,栈的机会来了-- [参考解答] 解法:头文件sqstack.h请见[顺序栈算法库],使用链栈也可以. #include <stdio.h> #incl

数据结构--栈的基本操作及应用(数制转换)

#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <math.h> #define TRUE 1 #define FALSE 0 #define ERROR 0 #define INFEASIBLE -1 typedef int Status; typedef int Boolean; typedef int SElemType; #define STACK_INIT_SI

Java数据结构-线性表之栈(顺序栈和链栈)

栈的定义:(特殊的线性表) ??仅在表的一端进行插入和删除的线性表.允许插入.删除的这一端称为栈顶,另一端称为栈底.表中没有元素时称为空栈. ??被称为后进先出的线性表(Last In First Out),简称 LIFO表,或被称为先进后出的线性表(First In Last Out),简称 FILO表. ??栈更具存储方式的不同分为两种:顺序栈和链栈. 顺序栈: 和顺序表一样,顺序栈也采用数组来存放数据元素: 为了保证栈底位置的不变,采用数组下标为0的位置作为顺序栈的栈底. 而栈顶指针的最大