Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct reg {
- int valor;
- struct reg *prox;
- };
- typedef struct reg celula;
- void imprime(celula *c){
- //função que insere um elemento ao final
- // da lista
- while(c->prox != NULL){
- printf("%d", c->prox->valor);
- c = c->prox;
- }
- }
- void insere(celula *c, int num){
- //função que varre a lista e imprime cada elemento
- celula *nova;
- nova = malloc(sizeof(celula));
- nova->valor = num;
- nova->prox = NULL;
- while(c->prox != NULL){
- c = c->prox;
- }
- c->prox = nova;
- }
- int busca(celula *c, int num) {
- // função que insere num no final da lista e retorne
- // o "indice virtual" (a partir do 0) ou -1 se nao
- // encontrar
- int indice = 0;
- while(c->prox->valor != NULL){
- if (num==c->valor){
- c = c->prox;
- printf("%d", indice);
- }
- else
- return -1;
- indice+=1;
- }
- }
- void remove(celula *c, int num) {
- // função que varre a lista em busca de num e remove
- // a celula (desaloca), reapontando o ponteiro prox
- // do elemento anterior ao removido
- while(c->prox->valor != NULL){
- if (num!=c->valor)
- printf("%d", c->valor);
- else
- c = c->prox;
- }
- }
- int main(){
- int opcao, num;
- celula *cabeca;
- cabeca = malloc(sizeof(celula));
- //malloc tem o tamanho de 1 celula
- cabeca->prox = NULL;
- //iniciando a lista sem nenhum elemento
- do{
- printf("1. Imprime a lista;\n2. Insere elemento ao final da lista;\n3. Busca elemento na lista;\n4. Remove elemento da lista;\n0. Encerra o programa.\n");
- scanf("%d", &opcao);
- if (opcao == 1) imprime (cabeca);
- if (opcao == 2) {
- printf("Informe um inteiro:\n");
- scanf("%d", &num);
- insere(cabeca, num);
- }
- if (opcao == 3) {
- printf("Informe um inteiro para a busca:\n");
- scanf("%d", &num);
- busca(cabeca, num);
- }
- if (opcao == 4) {
- printf("Informe um inteiro a ser removido:\n");
- scanf("%d", &num);
- remove(cabeca, num);
- }
- } while (opcao!=0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment