• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

SpecialOne

Inserir um inteiro na posição x de uma lista ligada de inteiros.

1 mensagem neste tópico

A ideia é dada uma lista de inteiros, um inteiro e uma posição, insere esse elemento na lista, nessa posição. Por exemplo, a instrução x = insert_at(x,10,0) insere o numero 10 no inicio da lista. Se a posição fornecida for maior do que o comprimento da lista, essa far-se-á no final:

cheguei ao seguinte codigo, mas esta a dar-me segmentation falt:


#include <stdio.h>
#include <stdlib.h>

typedef struct celula *LInt;

struct celula{
int valor;
LInt next;
};

LInt insere_at(LInt l, int a, int b){

if(l == NULL){
	LInt aux;
	aux = (LInt) malloc(sizeof(struct celula));
	aux -> valor = a;
	aux -> next = NULL;
	l = aux;
	return 	l;
		}

	else{
		LInt act;
		LInt pro;
		int c = 0;
		for(act = l, pro = act->next;(pro != NULL) || (c<b); act = act -> next, pro = pro -> next){
			c = c+1;
				}
		if(c+1 == b) { 	
			LInt cux;
			cux = (LInt) malloc(sizeof(struct celula));
			cux -> valor = a;
			cux -> next = pro;
			act -> next = cux;

			}
			else {
				if(act->next == NULL){
					LInt dux;
					dux = (LInt) malloc(sizeof(struct celula));
					dux -> valor = a;
					dux -> next = NULL;			
					act -> next = dux;

					}
				}
return l;			
	}
}


int main(){

LInt l = NULL;
LInt a;

l = insere_at(l,2,1);
l = insere_at(l,3,2);
l = insere_at(l,5,5);


for(a = l; a != NULL; a = a -> next){
printf(" %d",a->valor);
}

printf("\n");

return 0;

}

Alguem tem alguma sugestão.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora