Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct node {
- int valor;
- struct node *prox;
- struct node *ante;
- }Lista;
- Lista *criar (Lista*, int x);
- void show(Lista *);
- Lista *remover(Lista*, int);
- Lista *dividir (Lista *, int);
- int main (){
- Lista *prim = NULL,*prim2;
- int i,num;
- for (i=0;i<5;i++)
- prim = criar(prim,i);
- show(prim);
- printf ("\nInforme o valor a ser excluido : ");
- scanf ("%d",&num);
- prim = remover(prim, num);
- printf ("\n\nLista com exclusao\n");
- show(prim);
- printf ("\nA partir de qual valor deseja dividir?: ");
- scanf ("%d",&num);
- prim2 = dividir(prim,num);
- printf ("\n\nLista dividida \n");
- show (prim2);
- return 0;
- }
- Lista *dividir (Lista *ini, int x){
- Lista *p=ini->prox, *q = ini, *ini2=NULL;
- for (; p != ini && p->valor != x ; q = p, p = p->prox);
- ini2 = p;
- if ( p-> valor == x){
- if ( p == ini){
- ini = ini->prox;
- ini->ante = q;
- }else {
- p->ante = ini2->ante;
- ini2->ante = q;
- p->ante = p;
- }
- q -> prox = ini2;
- }
- return ini2;
- }
- void show(Lista *ini){
- Lista *p=ini;
- while (1){
- printf ("%d -> ",p->valor);
- p=p->prox;
- if (p==ini){
- break;
- }
- }
- }
- Lista *remover(Lista *ini, int x){
- Lista *p = ini->prox, *q = ini;
- for (; p != ini && p->valor != x ; q = p, p = p->prox);
- if (p->valor == x){
- if ( p == ini){
- ini = ini->prox;
- ini->ante = q;
- }else {
- p->prox->ante = q;
- }
- q->prox = p->prox;
- free(p);
- }
- return ini;
- }
- Lista *criar (Lista *ini, int x){
- Lista *p, *q;
- p = malloc(sizeof(Lista));
- if (!p){
- printf("Memória Insuficiente!!");
- exit (-1);
- }
- p->valor = x;
- if ( ini == NULL){
- ini = p;
- }else {
- q->prox = p;
- }
- ini->ante = p;
- p->ante = q;
- p->prox = ini;
- q = p;
- return ini;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement