Sistema de Informação e Ciência da Computação
quarta-feira, 6 de novembro de 2013
Lista Encadeada Simples
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
// Titulo: Lista Encadeada Simples.
// Autor: Sinval Júnior.
// Inicio: 25/10/2013.
// Fim: 06/11/2013.
typedef struct node_type {
char name[254];
int id;
struct node_type *next;
}ArrayList;
// Lista de
ArrayList *MemoryAlloc(); // 100%
void Insert(ArrayList *headList, int id, char name[]); // 100%
int Remove(ArrayList *headList, int id); // 100%
void ShowList(ArrayList *headList); // 100%
int Search(ArrayList *headList, int id); // 100%
ArrayList *StartList(); // 100%
void PainelPrompt(); // 100%
// Função principal.
int main(int argc, char *argv[], double fly){
srand(time(NULL));
ArrayList *user = StartList();
PainelPrompt(user);
}
// Cria um endereço de memoria.
ArrayList *MemoryAlloc(){
return malloc(sizeof(ArrayList));
}
// Função para inserir elemento na lista.
void Insert(ArrayList *headList, int id, char name[]){
printf("CHEGANDO: %d || %s", id, name);
// Percorre a lista ate o final.
while(headList->next != NULL){
headList = headList->next;
}
// Criação espaço para novo elemento.
headList->next = MemoryAlloc();
headList = headList->next;
// Preparando o final.
strcpy(headList->name, name);
headList->id = id;
headList->next = NULL;
}
// Imprime toda a lista na tela.
void ShowList(ArrayList *headList){
while(headList->next != NULL){
headList = headList->next;
printf("\n\nUser Name: %s", headList->name);
printf("\nUser ID: %d", headList->id);
}
}
// Função para remover elemento contido na lista.
int Remove(ArrayList *headList, int id){
ArrayList *tempList = headList; // Não é preciso usar a função MemoryAlloc().
while(headList->next != NULL){ // Percorre a Lista
headList = headList->next;
if(headList->id == id){ // Compara cada elemento da lista com o que se deseja remover.
if(headList->next != NULL){ // Verifica se o elemento é o ultimo.
tempList->next = headList->next;
free(headList);
return 1;
}else{ // Se for o ultimo tempList->next recebe NULL.
tempList->next = NULL;
free(headList);
return 1;
}
}else{
tempList = tempList->next;
}
}
return 0;
}
// Função para buscar um elemento na lista.
int Search(ArrayList *headList, int id){
while(headList->next != NULL){
headList = headList->next;
if(headList->id == id){
printf("\n\n------------------------------");
printf("\nUser Name: %s", headList->name);
printf("\nUser ID: %d", headList->id);
printf("\n------------------------------");
return 1;
}
}
return 0;
}
// Prepara para o proximo.
ArrayList *StartList(){
ArrayList *headList = MemoryAlloc();
headList->next = NULL;
return headList;
}
void PainelPrompt(ArrayList *headList){
int userCounter = 0, randomID = 0;
int userOption = -1;
char userName[254];
while(userOption != 0){
printf("\t\t[Insert Program Elements List]");
printf("\n\nPress the option to continue.\n1 - Insert.\n2 - Remove\n3 - Search\n4 - Print list.\n\n>:");
scanf("%d", &userOption);
switch(userOption){
case 1:
printf("Enter your name: ");
gets(userName);
gets(userName);
randomID = rand();
if(!Search(headList, randomID)){
userCounter++;
printf("\n\n\nMANDADO: %d, %s", randomID, userName);
Insert(headList, randomID, userName);
}else {
printf("ID existing name in the list.");
}
break;
case 2:
printf("\nEnter the ID to remove: ");
scanf("%d", &userOption);
Remove(headList, userOption);
break;
case 3:
printf("\nEnter the ID to search: ");
scanf("%d", &userOption);
Search(headList, userOption);
break;
case 4:
ShowList(headList);
default: printf("Enter a number in the existing panel.");
}
}
}
quarta-feira, 30 de outubro de 2013
Projeto Arvore AVL (Algoritmos e Estrutura de Dados)
Bom dia pessoal em breve estarei disponibilizando
um estudo meu sobre ponteiros em C, estou em busca de criar uma arvore AVL,
porem devemos seguir alguns passos iniciais para essa logica, começando por
ponteiros e ponteiro de ponteiros.
terça-feira, 29 de outubro de 2013
Primeira postagem.
Sem muito tempo para escrever, inclusive estou
escrevendo do trabalho, estou apenas fazendo um pequeno comentário inicial,
criei esse blog com intuito de ajudar iniciantes em programação, seja ela qual
for sua natureza e objetivo, lembrando que também sou iniciante nesse meio, e
pretendo colocar alguns pontos que acredito ser dificuldade de muito, para
ajudar na jornada de outros programadores.
Sejam todos bem vindos.
Assinar:
Postagens (Atom)