When we talk about Data Structure, the most common terms would most probably be Queue and Stack. A Queue is pretty much the same as a real world Queue (first come first serve theory) and a Stack would be pretty much similar as a Stack of books (first item will be the last to be taken out).
Time to look at my codes. :DSimpleDataStructureActivity.java
package zcs.dataStructure; import zcs.utility.dataStructure.Queue; import zcs.utility.dataStructure.Stack; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class SimpleDataStructureActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //Grab the TextView first TextView txtView; txtView = ((TextView)findViewById(R.id.lblView)); txtView.setText(""); //Following codes shows how to use a Queue Queue tmpQueue = new Queue(); txtView.append("====Queue====\n"); int tempNum; for(int i = 0; i < 5; i ++) { tempNum = (int) Math.floor(Math.random() * 1000); txtView.append("Insert " + "" + tempNum + " into Queue\n"); tmpQueue.push(tempNum); txtView.append("Queue has " + "" + tmpQueue.length() + " items.\n"); } for(int i = 0; i < tmpQueue.length(); i ++) { tempNum = ((Integer)tmpQueue.getValue(i)); txtView.append("Item " + i + "" + " has a value of " + tempNum +".\n"); } for(int i = 0; i < 5; i ++) { tmpQueue.pop(); txtView.append("Queue has " + "" + tmpQueue.length() + " items.\n"); if(!tmpQueue.isEmpty()) { for(int j = 0; j < tmpQueue.length(); j ++) { tempNum = ((Integer)tmpQueue.getValue(j)); txtView.append("Item " + j + "" + " has a value of " + tempNum +".\n"); } } } txtView.append("\n\n"); //Following codes shows how to use a Stack Stack tmpStack = new Stack(); txtView.append("====Stack====\n"); for(int i = 0; i < 5; i ++) { tempNum = (int) Math.floor(Math.random() * 1000); txtView.append("Insert " + "" + tempNum + " into Stack\n"); tmpStack.push(tempNum); txtView.append("Stack has " + "" + tmpStack.length() + " items.\n"); } for(int i = 0; i < tmpStack.length(); i ++) { tempNum = ((Integer)tmpStack.getValue(i)); txtView.append("Item " + i + "" + " has a value of " + tempNum +".\n"); } for(int i = 0; i < 5; i ++) { tmpStack.pop(); txtView.append("Stack has " + "" + tmpStack.length() + " items.\n"); if(!tmpStack.isEmpty()) { for(int j = 0; j < tmpStack.length(); j ++) { tempNum = ((Integer)tmpStack.getValue(j)); txtView.append("Item " + j + "" + " has a value of " + tempNum +".\n"); } } } } }
Node.java
package zcs.utility.dataStructure; public class Node { //The Next Node private Node _nextNode = null; public Node nextNode() { return _nextNode; } public void nextNode(Node _tempNode) { this._nextNode = _tempNode; } //The Prev Node private Node _prevNode = null; public Node prevNode() { return _prevNode; } public void prevNode(Node _tempNode) { this._prevNode = _tempNode; } //THe Node data private Object _data = null; public Object data() { return _data; } public void data(Object _data) { this._data = _data; } }
List.java
package zcs.utility.dataStructure; public class List { protected Node head = null; /** * Number of items in the list * @return int */ public final int length() { int count = 0; Node tempNode = null; tempNode = head; if(!isEmpty()) { count = 1; while(tempNode.nextNode() != null) { count ++; tempNode = tempNode.nextNode(); } } return count; } /** * Is the list empty *
* -> true when empty *
* -> false when not empty * @return true or false */ public final boolean isEmpty() { return (head == null); } /** * Get the data of the selected Item in the list * based on count * @return Object */ public Object getValue(int count) { Node tempNode = null; int tempCount = 0; if(isEmpty()) { return null; }else{ if(this.length() < count) { return null; }else{ tempNode = head; while(tempCount != count) { tempCount ++; tempNode = tempNode.nextNode(); } return tempNode.data(); } } } /** * Push a Object into the List */ public void push(Object tempObj) { Node newNode = new Node(); newNode.data(tempObj); Node tempNode; if(!isEmpty()) { tempNode = head; while(tempNode.nextNode() != null) { tempNode = tempNode.nextNode(); } tempNode.nextNode(newNode); newNode.prevNode(tempNode); }else{ head = newNode; } } /** * Pop item from the List * @return Object */ public Object pop() { return null; } }
Queue.java
package zcs.utility.dataStructure; public class Queue extends List { /** * Pop first item from the List * @return Object */ public Object pop() { Node tempNode = null; Node nextNode = null; if(!isEmpty()) { tempNode = head; if(tempNode.nextNode() != null) { nextNode = tempNode.nextNode(); nextNode.prevNode(null); } head = nextNode; tempNode.nextNode(null); return tempNode.data(); }else{ return null; } } }
Stack.java
package zcs.utility.dataStructure; public class Stack extends List { /** * Pop last item from the List * @return Object */ public Object pop() { Node tempNode = null; Node prevNode = null; if(!isEmpty()) { tempNode = head; while(tempNode.nextNode() != null) { tempNode = tempNode.nextNode(); } prevNode = tempNode.prevNode(); if(prevNode != null) { prevNode.nextNode(null); }else{ head = null; } tempNode.prevNode(null); return tempNode.data(); }else{ return null; } } }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="zcs.dataStructure" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".SimpleDataStructureActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
* Click here for the source files.
No comments:
Post a Comment