常见数据结构的Java实现

单链表的Java实现

首先参考wiki上的单链表说明,单链表每个节点包含数据和指向链表中下一个节点的指针或引用。然后看代码

import java.lang.*;

public class SinglyLinkeList

{

    Node start;

    public SinnglyLinkedList()

    {

      this.start=null;

    }



    public void addFront(Object newData)

    {

        Node cache = this.start; //store a reference to the current start node

        this.start = new Node(newData,cache); //assign our start to a new node that has newData and points to our old start

    }

    public addRear(Object newData)

    {

        Node cache = start; 

        Node current = null;



        while((current = cache.next) != null) //find the last Node

            cache = cache.next;



        cache.next = new Node(newData,null); //create a new node that has newData and points to null

    }



    public Object getFront()

    {

        return this.start.data; // return the front object's data

    }



    public class Node

    {

        public Object data; //the data stored in this node

        public Node next; //store a reference to the next node in this singlylinkedlist

        public Node(Object data,Node next){

            this.data =data;

            this.next =next;

        }

    }

}

单链表翻转的Java实现

循环方式

public static LinkedList reverse(LinkedList Node) {

    LinkedList previous = null;

    while (Node != null) {

        LinkedList next = Node.next;

        Node.next = previous;

        previous = Node;

        Node = next;

    }

    return previous;

}



package linkedlists;

public static LinkedList reverse(LinkedList node) {

LinkedList headNode = new LinkedList(1);

快速排序的Java实现

quick-sort

public class QuickSort {

  

 public static int SIZE = 1000000;

 

 public int[] sort(int[] input) {

  quickSort(input, 0, input.length-1);

  return input;

 }

  

 public static void main(String args[]){

  int[] a = new int[SIZE];

  for(int i=0;i<SIZE;i++){

   a[i] = (int)(Math.random()*SIZE);

  }

  QuickSort mNew = new QuickSort();

  long start = System.currentTimeMillis();

  mNew.sort(a);

  long end = System.currentTimeMillis();

  System.out.println("Time taken to sort a million elements : "+(end-start)+" milliseconds");

 }

  

 public void print(int[] inputData) {

  for(int i:inputData){

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

  }

  System.out.println();

 }

  

 private void quickSort(int arr[], int left, int right) {

  int index = partition(arr, left, right);

  if (left < index - 1)

   quickSort(arr, left, index - 1);

  if (index < right)

   quickSort(arr, index, right);

 }

  

 private int partition(int arr[], int left, int right) {

  int i = left, j = right;

  int tmp;

  int pivot = arr[(left + right) / 2];

  while (i <= j) {

   while (arr[i] < pivot)

    i++;

   while (arr[j] > pivot)

    j--;

   if (i <= j) {

    tmp = arr[i];

    arr[i] = arr[j];

    arr[j] = tmp;

    i++;

    j--;

   }

  }

  return i;

 }

}

你可能感兴趣的:(java实现)