前置函數 createBTree.c#include <stdlib.h> #include <stdio.h> void createBTree(int len, int *array) { int i; for(i = 0; i < len; i++){ insertBTreeNode(array[i]); } } void insertBTreeNode(int d) { BTree newnode, current; int inserted = 0; newnode = (BTree)malloc(sizeof(TNode)); newnode -> data = d; newnode -> left = NULL; newnode -> right = NULL; if(isBTreeEmpty()) head = newnode; else{ current = head; while(!inserted) if(current -> data > newnode -> data){ if(current -> left == NULL){ current -> left = newnode; inserted = 1; }else current = current -> left; } else{ if(current -> right == NULL){ current -> right = newnode; inserted = 1; }else current = current -> right; } } } int isBTreeEmpty() { if(head == NULL) return 1; else return 0; } void printBTree() { BTree ptr; printf("根節點:[%d]\n", head -> data); ptr = head -> left; printf("左子數:"); while(ptr != NULL){ printf("[%d]", ptr -> data); ptr = ptr -> left; } printf("\n右子數:"); ptr = head -> right; while(ptr != NULL){ printf("[%d]", ptr -> data); ptr = ptr -> right; } printf("\n"); } void inOrder(BTree ptr){ if(ptr != NULL){ inOrder(ptr -> left); printf("[%d]", ptr -> data); inOrder(ptr -> right); } } void printInOrder(){ inOrder(head); printf("\n"); } 前置函數 ch7-3-3.h #include <stdlib.h> struct Node { int data; struct Node *left; struct Node *right; }; typedef struct Node TNode; typedef TNode *BTree; BTree head = NULL; extern void createBTree(int len, int *array); extern void insertBTreeNode(int d); extern int isBTreeEmpty(); extern void printBTree(); extern void inOrder(BTree ptr); extern void printInOrder(); extern void preOrder(BTree ptr); extern void printPreOrder(); extern void postOrder(BTree ptr); extern void printPostOrder();按此處以編輯. 主程式 ch7-4-1.c #include "ch7-3-3.h" #include "createBTree.c" #include <stdlib.h> #include <stdio.h> int main(){ int data[9] = {5, 6, 4, 8, 2, 3, 7, 1, 9}; createBTree(9, data); printf("中序:\n"); printInOrder(); system("PAUSE"); return 0; }按此處以編輯.
0 評論
前置函數 createBTree.cvoid createBTree(int len, int *array) { int i; for(i = 0; i < len; i++){ insertBTreeNode(array[i]); } } void insertBTreeNode(int d) { BTree newnode, current; int inserted = 0; newnode = (BTree)malloc(sizeof(TNode)); newnode -> data = d; newnode -> left = NULL; newnode -> right = NULL; if(isBTreeEmpty()) head = newnode; else{ current = head; while(!inserted) if(current -> data > newnode -> data){ if(current -> left == NULL){ current -> left = newnode; inserted = 1; }else current = current -> left; } else{ if(current -> right == NULL){ current -> right = newnode; inserted = 1; }else current = current -> right; } } } #include <stdlib.h> #include <stdio.h> int isBTreeEmpty() { if(head == NULL) return 1; else return 0; } void printBTree() { BTree ptr; printf("根節點:[%d]\n", head -> data); ptr = head -> left; printf("左子數:"); while(ptr != NULL){ printf("[%d]", ptr -> data); ptr = ptr -> left; } printf("\n右子數:"); ptr = head -> right; while(ptr != NULL){ printf("[%d]", ptr -> data); ptr = ptr -> right; } printf("\n"); } 前置函數 ch7-3-3.h#include <stdlib.h> struct Node { int data; struct Node *left; struct Node *right; }; typedef struct Node TNode; typedef TNode *BTree; BTree head = NULL; extern void createBTree(int len, int *array); extern void insertBTreeNode(int d); extern int isBTreeEmpty(); extern void printBTree(); extern void inOrder(BTree ptr); extern void printInOrder(); extern void preOrder(BTree ptr); extern void printPreOrder(); extern void postOrder(BTree ptr); extern void printPostOrder(); 主程式 ch7-3.c#include "ch7-3-3.h" #include "createBTree.c" #include <stdlib.h> #include <stdio.h> int main() { int data[9] = {5, 6, 4, 8, 2, 3, 7, 1, 9}; createBTree(9, data); printf("二元數是空的:%d\n", isBTreeEmpty()); printf("二元數的節點內容:\n"); printBTree(); system("PAUSE"); return 0; } 檔案
|
封存檔 |