链表实现队列, 1,创捷一个储存数据和地址的类 2,创建一个含有头部的类和一个不断传引用的中间类
package com.ui629; public class Node { private static Noded next;//头部类 private static Noded last;//中间类 private static int length; public static void save(int data_1) { if (next == null) { Noded node =new Noded(); node.data = data_1; next = node; last = next; length++; } else { Noded node =new Noded(); node.data = data_1; last.next = node; last = last.next; length++; } } public static void change(int data_1, int index) { int count = 0; last = next; while (count != index) { last = last.next; count++; } last.data = data_1; } public static void check() { int count = 0; last = next; System.out.print(last.data + "\t"); while (count != length-2) { last = last.next; System.out.print(last.data + "\t"); count++; } last = last.next; System.out.println(last.data); } } class Noded { int data; Noded next; }静态变量可以被不同的引用类更改其中的数值 如下代码
public class Train { public static int s = 5; public static Train sd; public static void add(int a) { Train train =new Train(); train.s = a; sd = train; System.out.println(s); } public static void main(String[] args) { add(1); } }这串代码,输出结果为1,也就是s值发生改变了,无法存储。
数组实现队列
public class Array_s { private static int[] array = new int[1]; public static void save(int a) { int[] array_1 = new int[array.length+1]; for(int i = 0;i < array.length;i++) { array_1[i] = array[i]; } array_1[array.length] = a; array = array_1; } public static void change(int a, int index) { array[index] = a; } public static void check() { System.out.println(array.length); for(int i = 0;i < array.length;i++) { System.out.println(array[i]); } } }注: 之前误以为一个类无法实现链表是我的问题,因为我只是一直在尝试使用静态类,因此产生了错误认识。 用一个类实现链表的方式如下:
public class Noding { private int data; private Noding next; private Noding last; private int length; public void save(int data) { if (next == null && this.data == 0) { this.data = data; length++; } else if(next == null && this.data != 0) { Noding node = new Noding(); node.data = data; next = node; last = next; length++; } else { Noding node = new Noding(); node.data = data; last.next = node; last = node; length++; } } public void change(int data,int index) { int count = 0; last = next; if (index == 0) { this.data = data; } else if(index == 1) { next.data = data; } else { while (count != index - 1) { last = last.next; count++; } last.data = data; } } public void check() { last = next; if(length == 1) { System.out.println(this.data); } else if(length == 2) { System.out.println(this.data + "\t" + last.data); } else { int count = 0; System.out.print(this.data + "\t" + last.data + "\t"); while (count != length-3) { last = last.next; System.out.print(last.data + "\t"); count++; } last = last.next; System.out.println(last.data); } } }