正文
数据结构:
用 java 代码实现链表?(代码)
public class SortableLinkedList
> extends LinkedList { public void addinOrder(E target) { Predecessor prev=this; ListNode node =getNext(); while((node!=null) &;&; (node.getitem()pareTo(target)<0)){ prev=node; node=node.getNext(); } prev.setNext(new ListNode(target,node)); } /*链表排序*/ public void insertSort(){ SortableLinkedList newList =new SortableLinkedList(); for(E e:this){ newList.addinOrder(e); } setNext(newList.getNext()); } public static void main(String [] args) { SortableLinkedList slist =new SortableLinkedList(); slist.add("3"); slist.add("5"); slist.add("2"); slist.insertSort(); System.out.println(slist);
1
} }
用 java 代码实现基本的二叉树?(代码)
public class Tree{ public Node root=new Node(); //树的节点类 private class Node{ private Node left; private Node right; private Integer object; } public void add(Integer o){ if(root.object==null){ root.object=o; return; } Node node=root; while(node.object!=null){ //小的在左边,大的在右边 if(opareTo(node.object) <=0){ if(node.left!=null){ node=node.left; }else{ node.left=new Node(); node=node.left; } }else{ if(node.right!=null){ node=node.right; }else{ node.right=new Node(); node=node.right; } } } node.object=o; } }
2
用 java 代码实现栈结构?(代码)
public class StackX { private int maxSize; // 栈的队列大小 private long[] stackArray; private int top = -1; //栈的顶部 /** * 初始化 * 根据参数规定的容量创建一个新栈,栈的域包括表示最大容量的变量 * 数组本身及变量 top,它存储栈顶元素的下标 */ public StackX(int s) { maxSize = s; //set array size this.stackArray = new long[maxSize]; //create array } /** * 入栈 * 将 top 值增加一,使它指向原顶端数据项上面的一个位置 * 并在一个位置存储一个数据项 */ public void push(long j) { this.stackArray[++top] = j; //take item from top of stack } /** * 出栈 * 返回 top 标识的数据项值,然后 top 减一 * 其效果是从栈中移除一个数据项 */ public long pop() { return this.stackArray[top--]; //access item, decrement top } /** * 返回位于栈 top 的值,但不做任何改动 */ public long peek() { return this.stackArray[top]; } /**
3
* 判断是否空栈,栈空时 top 变量为-1 */ public boolean isEmpty() { return this.top == -1; } /** * 判断栈是否以满,栈满时 top 变量为 maxSize-1 */ public boolean isFull() { return top == this.maxSize - 1; } } 测试类 public class StackApp { public static void main(String[] args) { //初始化栈,设置栈的队列大小 StackX sx = new StackX(10); //入栈 sx.push(100); sx.push(200); sx.push(300); sx.push(400); sx.push(500); //判断是否为空栈 String temp; if(sx.isEmpty()) temp = "空栈"; else temp = "非空栈"; System.out.println("sx 栈为: " + temp); //打印顶栈 System.out.println("top of stack: " + sx.peek
()); //循环输出栈值 while(!sx.isEmpty()) { long value = sx.pop(); System.out.println("出栈值为: " + value); } } }
4
算法:
各种排序的算法?(代码)
冒泡排序: // 初始化变量 int[] data = { 12, 8, 3, 59, 132, 1236, 3400, 8, 352, 37 }; // 是否打印排序后结果 // 循环整个数组 for (int i = 0; i data[j + 1]) { // 将两个数字的位置进行对调 int temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; } } for (int k = 0; k < data.length; k++) System.out.print(data[k] + " "); System.out.println(); } 插入排序: int[] data = new int[] { 12, 8, 3, 59, 132, 1236, 3400, 8, 352,