Arbol_4
-
Upload
jose-mendieta-cruz -
Category
Documents
-
view
214 -
download
2
description
Transcript of Arbol_4
#include #include #include #include #include
#define MALLOC(x) ( (x *) malloc (sizeof(x)))#define FOREVER 1#define YES 1#define NO 0#define BELL "\007"#define ESC 27#define ORDER 2#define MAX_NODE 2 * ORDER
typedef int keytype;
typedef struct element_def { keytype key; char nombre[20]; char direccion[20]; char carrera[3]; int plan; int semestre; }element;
typedef struct btree_node { struct btree_node *parent; int no_of_elements; element elements[MAX_NODE]; struct btree_node *children[MAX_NODE + 1]; }BTREE_NODE;
typedef BTREE_NODE *btree_ptr;Aadir/********************************************************************/void add_an_element(btree_ptr *root_ptr){ element new_element; char buffer[81];
clrscr(); printf("\n\n\t\t ANADIR AL ARCHIVO"); printf("\n\t\t------------------"); printf("\n\n\tBOLETA: "); gets(buffer); new_element.key = atol(buffer); printf("\n\tNOMBRE: "); gets(new_element.nombre); printf("\n\tDIRECCION: "); gets(new_element.direccion); printf("\n\tCARRERA: "); gets(new_element.carrera); printf("\n\tPLAN: "); gets(buffer); new_element.plan=atoi(buffer); printf("\n\tSEMESTRE: "); gets(buffer); new_element.semestre= atoi(buffer); insert_btree(root_ptr, new_element);} Modificar/********************************************************************/void modify_an_element(btree_ptr root_ptr){ btree_ptr node_ptr; int index; char buffer[81];
clrscr(); printf("\n\n\t\tMODIFICACIONES"); printf("\n\t\t--------------"); printf("\n\BOLETA A MODIFICAR: "); gets(buffer); search_btree(root_ptr, atol(buffer), &node_ptr, &index); if(node_ptr == NULL) { printf("\n\t\tLA BOLETA NO SE ENCUENTRA EN EL ARCHIVO"); key_to_continue(); return; } printf("\n\tDIGITE NUEVO DATOS O PARA MANTENER EL ANTERIOR"); printf("\n\t------------------------------------------------------"); printf("\n\tNOMBRE [%s]: ",node_ptr->elements[index].nombre); get_string(node_ptr->elements[index].nombre); printf("\n\tDIRECCION [%s]: ", node_ptr->elements[index].direccion); get_string(node_ptr->elements[index].direccion); printf("\n\tCARRERA [%s]: ",node_ptr->elements[index].carrera); get_string(node_ptr->elements[index].carrera); printf("\n\tPLAN [%d]: ",node_ptr->elements[index].plan); gets(buffer); if(buffer[0] != '\0') node_ptr->elements[index].plan = atoi(buffer); printf("\n\tSEMESTRE [%d]: ", node_ptr->elements[index].semestre); gets(buffer); if(buffer[0] != '\0') node_ptr->elements[index].semestre = atoi(buffer);}
Salvar/********************************************************************/void save_part_btree(btree_ptr root_ptr){ char ch, treefilnam[11]; FILE *file_ptr;
if(root_ptr == NULL) { printf("\n\t\tERROR: EL ARBOL ACTUAL ESTA VACIO!"); key_to_continue(); return; } printf("\n\tDame el nombre del archivo (nuevo o viejo) a utilizar : "); printf("\n\t\tEJEMPLO : ARCHIVO1.DAT => "); scanf("%15s", treefilnam); if((file_ptr = fopen(treefilnam, "w+b")) == NULL) { printf("\n\n\tERROR: NO SE PUEDE ABRIR EL ARCHIVO!"); key_to_continue(); return; } write_to_disk(root_ptr, file_ptr); fclose(file_ptr);}