Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct lse{
- int info;
- struct lse *prox;
- } TLSE;
- void inverte_v (TLSE* l);
- TLSE* inserel(TLSE *l, int elem);
- void imprimel(TLSE *l);
- void liberal(TLSE *l);
- TLSE* misc (TLSE* l, int elem);
- int main(void)
- {
- int n;
- TLSE*l=NULL;
- int op=1;
- while(op==1)
- {
- printf("Digite um numero para a lista: ");
- scanf("%d",&n);
- l=inserel(l,n);
- printf("Deseja operar novamente? 1 ou 0: ");
- scanf("%d",&op);
- }
- int i;
- printf("Lista original:\n");
- imprimel(l);
- printf("\n");
- printf("Digite um valor para a miscelania: ");
- scanf("%d",&i);
- printf("Lista modificada:\n");
- TLSE*Copia=misc(l,i);
- imprimel(Copia);
- liberal(l);
- liberal(Copia);
- return 0;
- }
- TLSE* misc (TLSE* l, int elem)
- {
- TLSE*Copia=NULL;
- TLSE*q=l;
- int i;
- while(q)
- {
- if(q->info==elem)
- {
- for(i=1;i<elem+1;i++) Copia=inserel(Copia,i);
- Copia=inserel(Copia,elem);
- for(i=1;i<elem+1;i++) Copia=inserel(Copia,i);
- }
- else Copia=inserel(Copia,q->info);
- q=q->prox;
- }
- inverte_v(Copia);
- return Copia;
- }
- TLSE* inserel(TLSE *l, int elem){
- TLSE *novo = (TLSE *) malloc(sizeof(TLSE));
- novo->prox = l;
- novo->info = elem;
- return novo;
- }
- void imprimel(TLSE *l){
- TLSE *p = l;
- while(p){
- printf("%d ", p->info);
- p = p->prox;
- }
- return;
- }
- void liberal(TLSE *l){
- TLSE *p = l, *q;
- while(p){
- q = p;
- p = p->prox;
- free(q);
- }
- }
- void inverte_v (TLSE* l){
- int temp,n=0;
- for(TLSE*h=l;h;h=h->prox)n++;
- for(int i=n-1;i>0;i--){
- TLSE*p=l;
- for(int j=0;j<i;j++){
- temp=p->info;
- p->info=p->prox->info;
- p->prox->info=temp;
- p=p->prox;
- }
- }
- return;
- }
Add Comment
Please, Sign In to add comment