Startpunkten
This commit is contained in:
50
Lab2/tree.c
Normal file
50
Lab2/tree.c
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Laboration 2 i C och UNIX
|
||||
*
|
||||
* Komplett shell
|
||||
* =========================================
|
||||
*
|
||||
* Christian Ohlsson, di7chro@cse.kau.se
|
||||
* Stefan Sonesson, di7stes@cse.kau.se
|
||||
*
|
||||
* Karlstads Universitet, 991209
|
||||
*
|
||||
*
|
||||
*===========================================
|
||||
*/
|
||||
#include "tree.h"
|
||||
|
||||
treePtr tree=NULL;
|
||||
extern char *symTable[];
|
||||
|
||||
/*Skapar en nod med ett visst metatecken*/
|
||||
treePtr makeNode(int op,treePtr left,treePtr right) {
|
||||
treePtr tmp = malloc(sizeof(treeNode));
|
||||
tmp->nodeType = op;
|
||||
tmp->index = -1;
|
||||
tmp->right = right;
|
||||
tmp->left = left;
|
||||
return tmp;
|
||||
}
|
||||
/*Skapar ett löv som innehåller ett kommando*/
|
||||
treePtr makeLeaf(int index) {
|
||||
treePtr tmp = malloc(sizeof(treeNode));
|
||||
tmp->nodeType = 0;
|
||||
tmp->index = index;
|
||||
tmp->right = tmp->left = NULL;
|
||||
return tmp;
|
||||
}
|
||||
/*Skriver ut trädet på skärmen*/
|
||||
void printTree(treePtr tPtr){
|
||||
char str[10];
|
||||
if(tPtr == NULL) ;
|
||||
else{
|
||||
if(!tPtr->nodeType) /*Om det är ett löv...(kommando eller arg)*/
|
||||
sprintf(str,"%s---%d",symTable[tPtr->index],tPtr->nodeType);
|
||||
else /*Vi har ett metatecken!*/
|
||||
sprintf(str,"%d",tPtr->nodeType);
|
||||
puts(str);
|
||||
printTree(tPtr->left);
|
||||
printTree(tPtr->right);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user