搜尋此網誌

顯示具有 資料結構 標籤的文章。 顯示所有文章
顯示具有 資料結構 標籤的文章。 顯示所有文章

2011年7月22日 星期五

Circular Queue Array



#include <iostream>
#define capacity 5
using namespace std;

class ArrayQueue {
public:
int size;
int myFrontPos, myBackPos;
int array[capacity];
ArrayQueue(){
size=0;
myFrontPos=0;
myBackPos=0;
}

void enqueue(int number) {
int newBack=(myBackPos+1)%capacity;
if (size==capacity) {
cout<<"queue is full!!"<<endl;
} else {
array[myBackPos]=number;
myBackPos=newBack;
size++;
}
}

void dequeue() {
if (size==0) {
cout<<"queue is empty!!"<<endl;
} else {
myFrontPos=(myFrontPos+1)%capacity;
size--;;
}

}

void display() {
for(int i=0;i<size;i++){
cout <<array[i]<<endl;
}

}

};

int main() {
ArrayQueue aq;
aq.enqueue(1);
aq.enqueue(2);
aq.enqueue(3);
aq.enqueue(4);
aq.enqueue(5);
aq.dequeue();
aq.enqueue(6);
aq.display();
return 0;
}

2011年7月19日 星期二

Binary Search Tree C++

Java程式開發和維護

以下是Binary Search Tree的實作,綠色字的部分是用preOrder遞迴的方式列出這棵樹所有的元素.所謂的 preOrder的意思是說先找root,然後找Left node, then Right node.另外還有,inOrder 和postOrder,分別把root放在中間找亦或是把root最後找



Java binary search

BST with Java 行程安排應用程式

2011年7月18日 星期一

Queue Implemented by a Linked List

Queue:是一種先進先出的資料結構(First In First Out).
下面的範例程式使用C++ 的Linked List來實現Queue.




#include <iostream>
using namespace std;

class Node {

public:
int data;
Node* nxtNode;
Node(int _data) {
data=_data;//Data
nxtNode=NULL;//pointer to next one
}
};

class LinkedList {
Node* previous;
Node* next;
public:
LinkedList() {
previous=NULL;
next=NULL;
}

void insert(Node * _node) {
if (previous==NULL) {
previous= next= _node;//first node
} else {
(*next).nxtNode=_node;
next=_node;
}
}

void displayAll() {
Node* tmp=previous;
while(tmp!=NULL){
cout<<(*tmp).data <<endl;
tmp=(*tmp).nxtNode;
}
}
};

int main() {
Node* firstNode=new Node(1);
Node* secondNode=new Node(2);
Node* thirdNode=new Node(3);
LinkedList ll;
ll.insert(firstNode);
ll.insert(secondNode);
ll.insert(thirdNode);
ll.displayAll();
return 0;
}

Stack implementation linked list

以下所有的資料結構都是用C++實作,
    linked list
  • 用指標(pointer)實作的list可以無限制的擴充大小,但無法像陣列一樣可以直接(Direct)或是隨機存取(Random Access)儲存的資料.

  • 基本的linkeded list(鏈結串列),包含一個data的欄位,和一個next pointer欄位用來指向下一個資料


以下是以一個LinkedList實作Stack(First In Last Out)的例子