Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///////TadSLL.H
- #ifndef ESTRUTURA_H
- #define ESTRUTURA_H
- #ifndef TRUE
- #define TRUE 1
- #endif
- #ifndef FALSE
- #define FALSE 0
- #endif
- typedef struct _node_{
- void* data;
- struct _node_ *next;
- }SLNode;
- typedef struct _list_{
- SLNode *first;
- SLNode *cur;
- SLNode *last;
- }SLList;
- SLList* createList();
- int destroyList(SLList *head);
- int insertList(SLList *l, void* data);
- void** removeFirst(SLList *l);
- void** getFirst(SLList *l);
- void** getNext(SLList *l);
- int getNumElms(SLList *l);
- void** Query(SLList *l, void* key, int (*compara) (void*, void*));
- #endif /* ESTRUTURA_H */
- //--------------------------------------------------------------------
- ////////////////////////TadSLL.CPP
- #include <iostream>
- #include "TadSLL.h"
- SLList* createList(){
- SLList* head = new SLList;
- if(head != NULL){
- head->first = NULL;
- return head;
- }
- return NULL;
- }
- int destroyList(SLList *head){
- if(head != NULL){
- if(head->first == NULL){
- delete head;
- return TRUE;
- }
- }
- return FALSE;
- }
- int insertList(SLList *l, void* data){
- SLNode *novo;
- if(l!= NULL && data != NULL){
- novo = new SLNode();
- novo->data = data;
- if(l->first == NULL){
- l->first = novo;
- }else{
- l->last->next = novo;
- }
- l->last = novo;
- return TRUE;
- }
- return FALSE;
- }
- void** removeFirst(SLList *l){
- SLNode *no;
- void* *data;
- if(l != NULL){
- no = l->first;
- l->first = no->next;
- if(l->first == NULL){
- l->last = NULL;
- }
- *data = no->data;
- delete no;
- }
- return data;
- }
- void** getFirst(SLList *l){
- void* *data;
- if(l != NULL){
- if(l->first != NULL){
- *data = l->first->data;
- l->cur = l->first->next;
- }
- }
- return data;
- }
- void** getNext(SLList *l){
- void* *data;
- if(l != NULL){
- if(l->first != NULL){
- l->cur = l->cur->next;
- if(l->cur != NULL){
- *data = l->cur->data;
- }
- }
- }
- return data;
- }
- int getNumElms(SLList *l){
- SLNode *no;
- int cont = 0;
- if(l != NULL){
- no = l->first;
- while(no != NULL){
- cont++;
- no = no->next;
- }
- }
- return cont;
- }
- int queueIsEmpty(SLList *head){
- if(head != NULL){
- if(head->first != NULL){
- return FALSE;
- }
- }
- return TRUE;
- }
- void** Query(SLList *l, void* key, int (*compara) (void*, void*)){
- SLNode *no;
- void* *data;
- if(!queueIsEmpty(l) && key != NULL){
- no = l->first;
- while(compara(key,no->data) == FALSE){
- no = no->next;
- }
- *data = no->data;
- return data;
- }
- return NULL;
- }
- //--------------------------------------------------------------------------------
- //Main.CPP
- #include <iostream>
- #include <cstdio>
- #include <cstdlib>
- #include "TadSLL.h"
- using namespace std;
- /*
- *
- */
- void imprimeMenu();
- void menuConjunto(char c);
- void preencheConjunto(SLList *l, char c);
- void imprimirLista(SLList *l, char c);
- int main(int argc, char** argv) {
- SLList *cjA, *cjB, *cjC;
- int continua = TRUE, optMenu, optSubMenu;
- char c = '0';
- do{
- if(c == '0'){
- system("clear");
- imprimeMenu();
- cin >> optMenu;
- }
- switch(optMenu){
- case 1:
- c = 'A';
- menuConjunto(c);
- cin >> optSubMenu;
- switch(optSubMenu){
- case 1:
- if(cjA == NULL){
- cjA = createList();
- if(cjA != NULL){
- cout << "Lista criada com sucesso!!!"<<endl;
- }
- }else{
- cout << "A lista ja existe... Selecione outra opcao..." << endl;
- }
- cin.ignore();
- cin.get();
- break;
- case 2:
- preencheConjunto(cjA,c);
- break;
- case 3:
- imprimirLista(cjA,c);
- break;
- case 0:
- c = '0';
- break;
- default:
- cout << "Informe uma opcao valida" << endl;
- }
- break;
- case 2:
- c = 'B';
- break;
- case 3:
- break;
- case 4:
- break;
- case 5:
- break;
- case 6:
- break;
- case 0:
- break;
- default:
- cout << "Informe uma opcao valida" << endl;
- }
- }while(continua == TRUE);
- return 0;
- }
- void imprimeMenu(){
- system("clear");
- cout << "****************OPERACOES COM TABELAS****************" << endl;
- cout << "SELECIONE UMAS DAS OPCOES" << endl;
- cout << "1 - Conjunto A\n2 - Conjunto B" << endl;
- cout << "3 - (A U B) \n4 - (A ∩ B) \n5 - (A - B) \n6 - Complemento(A,B)\n";
- cout << "0 - Sair" << endl;
- }
- void menuConjunto(char c){
- system("clear");
- cout << "****CONJUNTO " << c << "****" << endl;
- cout << "1 - Criar \n2 - Preencher \n3 - Mostrar \n0 - Voltar" << endl;
- }
- void preencheConjunto(SLList *l, char c){
- int cont = 1, continua = TRUE, data;
- system("clear");
- cin.ignore();
- do{
- cout << "Informe o " << cont << "Elemento da Tabela " << c << endl;
- cin >> data;
- if(insertList(l,(void*)data) == TRUE){
- cout << "\nInserido!!! Deseja Continuar? (0-Nao 1-Sim)";
- cont++;
- }else{
- cout << "\nUm erro ocorreu. Tentar novamente? (0-Nao 1-Sim)";
- }
- cin >> continua;
- }while(continua == TRUE);
- }
- void imprimirLista(SLList *l, char c){
- void* data;
- int *num;
- cin.ignore();
- system("clear");
- cout << "Elementos do Conjunto " << c << ":\n";
- data = getFirst(l);
- while(data != NULL){
- num = (int*) data;
- cout << num << "\t";
- data = getNext(l);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement