美文网首页Java基础学习
Java实例-数据结构

Java实例-数据结构

作者: JWking | 来源:发表于2019-07-28 13:33 被阅读0次

1、Java 实例 – 数字求和运算:使用do...while结构求0~100的整数数字之和

public class DateStr_Sum {

public DateStr_Sum() {

int limit=100;

int sum=0;

int i=1;

do {

sum=sum+i;

i++;

}while(i<=limit);

System.out.println("0~100的整数数字之和:"+sum);

}

}

运行结果:

2、Java 实例 – 利用堆栈将中缀表达式转换成后缀:

public class Stack {

private int maxSize;

private char[]stackArray;

private int top;

public Stack(int max) {

maxSize = max;

stackArray =new char[maxSize];

top = -1;

}

public void push(char j) {

stackArray[++top] = j;

}

public char pop() {

return stackArray[top--];

}

public char peek() {

return stackArray[top];

}

public boolean isEmpty() {

return (top == -1);

}

}

·····························································································

public class DateStr_StackTransform {

private StacktheStack;

private Stringinput;

private Stringoutput ="";

public DateStr_StackTransform(String in) {

input = in;

int stackSize =input.length();

theStack =new Stack(stackSize);

}

public String doTrans() {

for (int j =0; j

char ch =input.charAt(j);

switch (ch) {

case '+':

case '-':

gotOper(ch,1);

break;

case '*':

case '/':

gotOper(ch,2);

break;

case '(':

theStack.push(ch);

break;

case ')':

gotParen(ch);

break;

default:

output =output + ch;

break;

}

}

while (!theStack.isEmpty()) {

output =output +theStack.pop();

}

//System.out.println(output);

        return output;

}

public void gotOper(char opThis,int prec1) {

while (!theStack.isEmpty()) {

char opTop =theStack.pop();

if (opTop =='(') {

theStack.push(opTop);

break;

}

else {

int prec2;

if (opTop =='+' || opTop =='-')

prec2 =1;

else

                    prec2 =2;

if (prec2 < prec1) {

theStack.push(opTop);

break;

}

else

                    output =output + opTop;

}

}

theStack.push(opThis);

}

public void gotParen(char ch){

while (!theStack.isEmpty()) {

char chx =theStack.pop();

if (chx =='(')

break;

else

                output =output + chx;

}

}

public static void main(String[] args)

throws IOException {

String input ="1+2*4/5-7+3/6";

String output;

DateStr_StackTransform theTrans =new DateStr_StackTransform(input);

output = theTrans.doTrans();

System.out.println("中缀式:"+input);

System.out.println("后缀式:" + output +'\n');

}

}

运行结果:

3、Java 实例 – 在链表(LinkedList)的开头和结尾添加元素:使用 LinkedList 类的 addFirst() 和 addLast() 方法在链表的开头和结尾添加元素。

public class DateStr_LinklistAdd {

public DateStr_LinklistAdd() {

LinkedList lList =new LinkedList();

lList.add("1");

lList.add("2");

lList.add("3");

lList.add("4");

lList.add("5");

System.out.println("原链表:"+lList);

lList.addFirst("0");

System.out.println("头部添加:"+lList);

lList.addLast("6");

System.out.println("尾部添加:"+lList);

}

}

运行结果:

4、Java 实例 – 获取链表(LinkedList)的第一个和最后一个元素:使用 LinkedList 类的 linkedlistname.getFirst() 和 linkedlistname.getLast() 来获取链表的第一个和最后一个元素。

public class DateStr_LinklistGet {

public DateStr_LinklistGet() {

LinkedList lList =new LinkedList();

lList.add("100");

lList.add("200");

lList.add("300");

lList.add("400");

lList.add("500");

System.out.println("链表元素有:"+lList);

System.out.println("链表的第一个元素是:" + lList.getFirst());

System.out.println("链表的最后一个元素是:" + lList.getLast());

}

}

运行结果:

5、Java 实例 – 删除链表中的元素:使用 clear() 方法来删除链表中的元素。

public class DateStr_LinklistDelete {

public DateStr_LinklistDelete() {

LinkedList lList =new LinkedList();

lList.add("1");

lList.add("8");

lList.add("6");

lList.add("4");

lList.add("5");

System.out.println("原链表:"+lList);

lList.subList(2,4).clear();//2之后是起始删除位置,4是结束位置

        System.out.println("删除后链表:"+lList);

}

}

运行结果:

6、Java 实例 – 获取链表的元素:使用 top() 和 pop() 方法来获取链表的元素。

public class DateStr_LinklistLookup {

public DateStr_LinklistLookup() {

for (int i =30; i <40; i++)

push(new Integer(i));

System.out.print(top()+"  ");

System.out.print(pop()+"  ");

System.out.print(pop()+"  ");

System.out.println(pop());

}

private LinkedListlist =new LinkedList();

public void push(Object v) {

list.addFirst(v);

}

public Object top() {

return list.getFirst();

}

public Object pop() {

return list.removeFirst();

}

}

运行结果:

7、Java 实例 – 获取向量元素的索引值:使用 Collections 类的 sort() 方法对向量进行排序并使用 binarySearch() 方法来获取向量元素的索引值。

public class DateStr_VectorKey {

public DateStr_VectorKey() {

Vector v =new Vector();

v.add("X");

v.add("M");

v.add("D");

v.add("A");

v.add("O");

Collections.sort(v);

System.out.println("向量中的元素有:"+v);

int index = Collections.binarySearch(v,"D");

System.out.println("元素D的索引值为 : " + index);

}

}

运行结果:

8、Java 实例 – 栈的实现:通过创建用于插入元素的自定义函数 push() 方法和用于弹出元素的 pop() 方法来实现栈。

public class DateStr_Stack {

private int maxSize;

private char[]stackArray;

private int top;

public DateStr_Stack(int max) {

maxSize = max;

stackArray =new char[maxSize];

top = -1;

push('1');

push('2');

push('3');

push('4');

push('5');

System.out.println("栈元素有:");

while (!isEmpty()) {

long value = pop();

System.out.print(value);

System.out.print(" ");

}

System.out.println("");

}

public void push(char j) {

stackArray[++top] = j;

}

public char pop() {

return stackArray[top--];

}

public char peek() {

return stackArray[top];

}

public boolean isEmpty() {

return (top == -1);

}

}

运行结果:

9、Java 实例 – 链表元素查找:使用 linkedlistname.indexof(element) 和 linkedlistname.Lastindexof(elementname) 方法在链表中获取元素第一次和最后一次出现的位置。

public class DateStr_LinklistFind {

public DateStr_LinklistFind() {

LinkedList lList =new LinkedList();

lList.add("1");

lList.add("2");

lList.add("3");

lList.add("4");

lList.add("5");

lList.add("2");

System.out.println("链表元素有:"+lList);

System.out.println("元素 2 第一次出现的位置:" + lList.indexOf("2"));

System.out.println("元素 2 最后一次出现的位置:"+ lList.lastIndexOf("2"));

}

}

运行结果:

10、Java 实例 – 压栈出栈的方法实现字符串反转:使用用户自定义的方法 StringReverserThroughStack() 来实现字符串反转。

public class Stack {

private int maxSize=20;

private char[]stackArray;

private int top;

public Stack() {

stackArray =new char[maxSize];

top = -1;

while (!isEmpty()) {

long value = pop();

System.out.print(value);

System.out.print(" ");

}

System.out.println("");

}

public void push(char j) {

stackArray[++top] = j;

}

public char pop() {

return stackArray[top--];

}

public char peek() {

return stackArray[top];

}

public boolean isEmpty() {

return (top == -1);

}

}

··············································································

public class DateStr_StackReverse {

private Stringinput ="www.jwkschool.cc";

private Stringoutput;

public DateStr_StackReverse()throws IOException {

String output;

output = doRev();

System.out.println("反转前: " +input);

System.out.println("反转后: " + output);

}

public String doRev() {

int stackSize =input.length();

Stack theStack =new Stack();

for (int i =0; i

char ch =input.charAt(i);

theStack.push(ch);

}

output ="";

while (!theStack.isEmpty()) {

char ch = theStack.pop();

output =output + ch;

}

return output;

}

}

运行结果:

11、Java 实例 – 队列(Queue)用法:队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。LinkedList类实现了Queue接口,因此可以把LinkedList当成Queue来用。

public class DateStr_Queue {

public DateStr_Queue() {

//add()和remove()方法在失败的时候会抛出异常(不推荐)

        Queue queue =new LinkedList();         //添加元素

        queue.offer("a");

queue.offer("b");

queue.offer("c");

queue.offer("d");

queue.offer("e");

for(String q : queue){

System.out.print(q+"  ");

}

System.out.println("`````````````````");

System.out.println("poll="+queue.poll());//返回第一个元素,并在队列中删除

        for(String q : queue){

System.out.print(q+"  ");

}

System.out.println("\n`````````````````");

System.out.println("element="+queue.element());//返回第一个元素

        for(String q : queue){

System.out.print(q+"  ");

}

System.out.println("\n`````````````````");

System.out.println("peek="+queue.peek());//返回第一个元素

        for(String q : queue){

System.out.print(q+"  ");

}

}

}

运行结果:

12、Java 实例 – 获取向量的最大元素:使用 Vector 类的 v.add() 方法及 Collection 类的 Collections.max() 来获取向量的最大元素。

public class DateStr_VectorGetMax {

public DateStr_VectorGetMax() {

Vector v =new Vector();

v.add(new Double("3.4324"));

v.add(new Double("3.3532"));

v.add(new Double("3.342"));

v.add(new Double("3.349"));

v.add(new Double("2.3"));

Object obj = Collections.max(v);

System.out.println("向量中的元素有:"+v);

System.out.println("最大元素是:"+obj);

}

}

运行结果:

13、Java 实例 – 链表修改:使用 listname.add() 和 listname.set() 方法来修改链接中的元素。

public class DateStr_LinklistUpdate {

public DateStr_LinklistUpdate() {

LinkedList officers =new LinkedList();

officers.add("B");

officers.add("B");

officers.add("T");

officers.add("H");

officers.add("P");

System.out.println("原链表:"+officers);

officers.set(2,"M");

System.out.println("新链表:"+officers);

}

}

运行结果:

14、Java 实例 – 旋转向量:使用 swap() 函数来旋转向量。

public class DateStr_VectorRevolve {

public DateStr_VectorRevolve() {

Vector v =new Vector();

v.add("1");

v.add("2");

v.add("3");

v.add("4");

v.add("5");

System.out.println("原向量:"+v);

Collections.swap(v,0,4);

System.out.println("旋转后:"+v);

}

}

运行结果:

相关文章

  • Java实例-数据结构

    1、Java 实例 – 数字求和运算:使用do...while结构求0~100的整数数字之和 public cla...

  • R和Python数据结构对比

    本文内容概要: R语言数据结构及实例操作 Python语言数据结构及实例操作 R语言数据结构及实例解析 接下开始学...

  • Java 实例

    Java 环境设置实例 Java 实例 – 如何编译一个Java 文件? Java 实例 – Java 如何运行一...

  • Java 实例 - 如何编译 Java 文件

    Java 实例 - 如何编译 Java 文件 Java 实例 本文我们演示如何编译 HelloWorld.java...

  • Java数据结构算法(二)栈和队列

    本文旨作于收集整理使用!! 导航 Java数据结构算法(一)链表 Java数据结构算法(三)树 Java数据结构算...

  • Java(Android)数据结构汇总 -- 总纲

    目录:Java(Android)数据结构汇总(一)-- List(上)Java(Android)数据结构汇总(一)...

  • 数据结构——介绍

    什么是数据结构 在《数据结构,算法及应用》一书中有这样的解释“数据结构是数据对象,存在与该对象的实例以及组成实例的...

  • Java 实例 - 查看线程优先级

    Java 实例 - 查看线程优先级 Java 实例 以下实例演示了如何使用 getThreadId() 方法获取线...

  • Java数据结构

    Java 数据结构 Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类: 枚举(E...

  • java 数据结构(collections)

    JAVA中常用的数据结构(java.util. 中) java中有几种常用的数据结构,主要分为Collection...

网友评论

    本文标题:Java实例-数据结构

    本文链接:https://www.haomeiwen.com/subject/xacurctx.html