Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 16.30 KB | None | 0 0
  1. /*
  2.  * File:   main.c
  3.  * Author: Victor
  4.  *
  5.  * Created on 22 de octubre de 2014, 08:06 PM
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <limits.h>
  11.  
  12. /*Listas*/
  13. typedef struct nodo {
  14.     int elem;
  15.     struct nodo *sig;
  16. } TNodo;
  17.  
  18. typedef struct lista {
  19.     int nElem;
  20.     TNodo *inicio;
  21.     TNodo *final;
  22. } TLista;
  23.  
  24. typedef struct nodo_char {
  25.     char elem;
  26.     struct nodo_char *sig;
  27. } TNodoChar;
  28.  
  29. typedef struct lista_char {
  30.     int nElem;
  31.     TNodoChar *inicio;
  32.     TNodoChar *final;
  33. } TListaChar;
  34.  
  35. /*Pila*/
  36. typedef struct {
  37.     TNodo *top;
  38. } TPila;
  39.  
  40. /*Cola*/
  41. typedef struct {
  42.     TNodo *inicio;
  43.     TNodo *final;
  44. } TCola;
  45.  
  46. /*Deque*/
  47. typedef struct deque {
  48.     int elem;
  49.     struct deque *sig;
  50.     struct deque *ant;
  51. } TNodoDeque;
  52.  
  53. typedef struct {
  54.     int nElem;
  55.     TNodoDeque *inicio;
  56.     TNodoDeque *final;
  57. } TDeque;
  58.  
  59. /*Listas*/
  60. void crear_lista(TLista *L) {
  61.     L->inicio = NULL;
  62.     L->final = NULL;
  63.     L->nElem = 0;
  64. }
  65.  
  66. void finalizar_lista(TLista *L) {
  67.     TNodo *ptrElim = L->inicio;
  68.     while (ptrElim) {
  69.         L->inicio = ptrElim->sig;
  70.         free(ptrElim);
  71.         ptrElim = L->inicio;
  72.     }
  73. }
  74.  
  75. int es_lista_vacia(TLista *L) {
  76.     return L->nElem == 0;
  77. }
  78.  
  79. void insertar_der(TLista *L, int n) {
  80.     TNodo *ptrNuevo = malloc(sizeof (TNodo));
  81.     if (ptrNuevo) {
  82.         ptrNuevo->elem = n;
  83.         ptrNuevo->sig = NULL;
  84.  
  85.         if (L->inicio == NULL)
  86.             L->inicio = ptrNuevo;
  87.         else
  88.             L->final->sig = ptrNuevo;
  89.         L->final = ptrNuevo;
  90.         (L->nElem)++;
  91.     }
  92. }
  93.  
  94. void insertar_izq(TLista *L, int n) {
  95.     TNodo *ptrNuevo = malloc(sizeof (TNodo));
  96.     if (ptrNuevo) {
  97.         ptrNuevo->elem = n;
  98.         ptrNuevo->sig = NULL;
  99.  
  100.         if (L->inicio == NULL)
  101.             L->inicio = ptrNuevo;
  102.         else
  103.             ptrNuevo->sig = L->inicio;
  104.         L->inicio = ptrNuevo;
  105.         (L->nElem)++;
  106.     }
  107. }
  108.  
  109. void eliminar(TLista *L, int n) {
  110.     TNodo *ptrRec, *ptrAnt;
  111.     int termino = 0;
  112.     ptrRec = L->inicio;
  113.     while (ptrRec && !termino) {
  114.         if (ptrRec->elem == n) {
  115.             if (ptrRec == L->inicio)
  116.                 L->inicio = L->inicio->sig;
  117.             else
  118.                 if (ptrRec == L->final) {
  119.                 L->final = ptrAnt;
  120.                 L->final->sig = NULL;
  121.             } else
  122.                 ptrAnt->sig = ptrRec->sig;
  123.             free(ptrRec);
  124.             termino = 1;
  125.             (L->nElem)--;
  126.         } else {
  127.             ptrAnt = ptrRec;
  128.             ptrRec = ptrRec->sig;
  129.         }
  130.     }
  131. }
  132.  
  133. void eliminar_izq(TLista *L) {
  134.     TNodo *ptrRec = L->inicio;
  135.     if (ptrRec) {
  136.         L->inicio = L->inicio->sig;
  137.         free(ptrRec);
  138.         (L->nElem)--;
  139.     }
  140. }
  141.  
  142. void imprimir_lista(TLista *L) {
  143.     int i;
  144.     TNodo *ptrRec = L->inicio;
  145.     for (i = 0; i < L->nElem; i++) {
  146.         printf("%d->", ptrRec->elem);
  147.         ptrRec = ptrRec->sig;
  148.     }
  149.     printf("NULL\n");
  150. }
  151.  
  152. /*Pilas*/
  153.  
  154. void crear_pila(TPila *P) {
  155.     P->top = NULL;
  156. }
  157.  
  158. void push(TPila *P, int n) {
  159.     TNodo *ptrNodo = malloc(sizeof (TNodo));
  160.     if (ptrNodo) {
  161.         ptrNodo->elem = n;
  162.         ptrNodo->sig = P->top;
  163.         P->top = ptrNodo;
  164.     }
  165. }
  166.  
  167. int es_pila_vacia(TPila *P) {
  168.     return (P->top == NULL);
  169. }
  170.  
  171. int pop(TPila *P) {
  172.     int valor;
  173.     TNodo *ptrNodo;
  174.     if (!es_pila_vacia(P)) {
  175.         ptrNodo = P->top;
  176.         valor = ptrNodo->elem;
  177.         P->top = P->top->sig;
  178.         free(ptrNodo);
  179.         return valor;
  180.     }
  181.     return -1;
  182. }
  183.  
  184. void finaliza_pila(TPila *P) {
  185.     while (!es_pila_vacia(P))
  186.         pop(P);
  187. }
  188.  
  189. void imprime_pila(TPila *P) {
  190.     TNodo *ptrRec = P->top;
  191.     while (ptrRec) {
  192.         printf("%d\n", ptrRec->elem);
  193.         ptrRec = ptrRec->sig;
  194.     }
  195. }
  196.  
  197. /*Cola*/
  198.  
  199. void crear_cola(TCola *C) {
  200.     C->inicio = NULL;
  201.     C->final = NULL;
  202. }
  203.  
  204. void encolar(TCola *C, int n) {
  205.     TNodo *ptrNodo = malloc(sizeof (TNodo));
  206.     if (ptrNodo) {
  207.         ptrNodo->elem = n;
  208.         ptrNodo->sig = NULL;
  209.         if (C->inicio == NULL)
  210.             C->inicio = ptrNodo;
  211.         else
  212.             C->final->sig = ptrNodo;
  213.         C->final = ptrNodo;
  214.     }
  215. }
  216.  
  217. int es_cola_vacia(TCola *C) {
  218.     return C->inicio == NULL;
  219. }
  220.  
  221. int desencolar(TCola *C) {
  222.     TNodo *ptrNodo;
  223.     int valor;
  224.     if (!es_cola_vacia(C)) {
  225.         ptrNodo = C->inicio;
  226.         valor = ptrNodo->elem;
  227.         C->inicio = C->inicio->sig;
  228.         free(ptrNodo);
  229.         return valor;
  230.     }
  231.     return -1;
  232. }
  233.  
  234. void finaliza_cola(TCola *C) {
  235.     while (!es_cola_vacia) {
  236.         desencolar(C);
  237.     }
  238. }
  239.  
  240. /*Ejercicios*/
  241.  
  242. TLista merge_listas(TLista *L1, TLista *L2) {
  243.     TLista lMerged;
  244.     crear_lista(&lMerged);
  245.  
  246.     TNodo *ptrRec1 = L1->inicio;
  247.     TNodo *ptrRec2 = L2->inicio;
  248.  
  249.     while (ptrRec1 && ptrRec2) {
  250.         if (ptrRec1->elem < ptrRec2->elem) {
  251.             insertar_der(&lMerged, ptrRec1->elem);
  252.             ptrRec1 = ptrRec1->sig;
  253.         } else {
  254.             insertar_der(&lMerged, ptrRec2->elem);
  255.             ptrRec2 = ptrRec2->sig;
  256.         }
  257.     }
  258.  
  259.     while (ptrRec1) {
  260.         insertar_der(&lMerged, ptrRec1->elem);
  261.         ptrRec1 = ptrRec1->sig;
  262.     }
  263.  
  264.     while (ptrRec2) {
  265.         insertar_der(&lMerged, ptrRec2->elem);
  266.         ptrRec2 = ptrRec2->sig;
  267.     }
  268.  
  269.     return lMerged;
  270. }
  271.  
  272. void partir_lista(TLista *L, TLista *primeraMitad, TLista *segundaMitad) {
  273.     int lenLista = L->nElem;
  274.     if (lenLista == 2) {
  275.         insertar_der(primeraMitad, L->inicio->elem);
  276.         insertar_der(segundaMitad, L->final->elem);
  277.     } else {
  278.         int i;
  279.         TNodo *ptrRec = L->inicio;
  280.  
  281.         for (i = 0; i < lenLista / 2; i++) {
  282.             insertar_der(primeraMitad, ptrRec->elem);
  283.             ptrRec = ptrRec->sig;
  284.         }
  285.  
  286.         for (i = lenLista / 2; i < lenLista; i++) {
  287.             insertar_der(segundaMitad, ptrRec->elem);
  288.             ptrRec = ptrRec->sig;
  289.         }
  290.     }
  291. }
  292.  
  293. void merge_sort(TLista* L) {
  294.     if (L->nElem > 1) {
  295.         TLista primeraMitad, segundaMitad;
  296.         crear_lista(&primeraMitad);
  297.         crear_lista(&segundaMitad);
  298.         partir_lista(L, &primeraMitad, &segundaMitad);
  299.         merge_sort(&primeraMitad);
  300.         merge_sort(&segundaMitad);
  301.         *L = merge_listas(&primeraMitad, &segundaMitad);
  302.     }
  303.  
  304. }
  305.  
  306. /*Pregunta 1*/
  307. void imprimePosiciones(TLista *L, TLista *P) {
  308.     TNodo *ptrRecP = P->inicio;
  309.     TNodo *ptrRecL;
  310.     while (ptrRecP) {
  311.         ptrRecL = L->inicio;
  312.         int i;
  313.         if (ptrRecP->elem <= L->nElem) {
  314.             for (i = 1; i < ptrRecP->elem; i++)
  315.                 ptrRecL = ptrRecL->sig;
  316.             printf("%d ", ptrRecL->elem);
  317.         }
  318.         ptrRecP = ptrRecP->sig;
  319.     }
  320.     printf("\n");
  321. }
  322.  
  323. /*Pregunta 2*/
  324. void parentheses_balance(TListaChar *L) {
  325.  
  326. }
  327.  
  328. /*Pregunta 3*/
  329.  
  330. void crear_deque(TDeque *D) {
  331.     D->nElem = 0;
  332.     D->inicio = NULL;
  333.     D->final = NULL;
  334. }
  335.  
  336. void insertar_deque_der(TDeque *D, int n) {
  337.     TNodoDeque *ptrNodo = malloc(sizeof (TNodoDeque));
  338.     if (ptrNodo) {
  339.         ptrNodo->elem = n;
  340.         ptrNodo->ant = NULL;
  341.         ptrNodo->sig = NULL;
  342.         if (D->inicio == NULL)
  343.             D->inicio = ptrNodo;
  344.         else {
  345.             D->final->sig = ptrNodo;
  346.             ptrNodo->ant = D->final;
  347.         }
  348.         D->final = ptrNodo;
  349.         (D->nElem)++;
  350.     }
  351. }
  352.  
  353. void insertar_deque_izq(TDeque *D, int n) {
  354.     TNodoDeque *ptrNodo = malloc(sizeof (TNodoDeque));
  355.     if (ptrNodo) {
  356.         ptrNodo->elem = n;
  357.         ptrNodo->ant = NULL;
  358.         ptrNodo->sig = NULL;
  359.         if (D->final == NULL)
  360.             D->final = ptrNodo;
  361.         else {
  362.             D->inicio->ant = ptrNodo;
  363.             ptrNodo->sig = D->inicio;
  364.         }
  365.         D->inicio = ptrNodo;
  366.         (D->nElem)++;
  367.     }
  368. }
  369.  
  370. int eliminar_deque_der(TDeque *D) {
  371.     int valor;
  372.     TNodoDeque *ptrEliminar;
  373.     if (D->final) {
  374.         ptrEliminar = D->final;
  375.         valor = ptrEliminar->elem;
  376.         D->final = D->final->ant;
  377.         D->final->sig = NULL;
  378.         free(ptrEliminar);
  379.         (D->nElem)--;
  380.         return valor;
  381.     }
  382.     return -1;
  383. }
  384.  
  385. int eliminar_deque_izq(TDeque *D) {
  386.     int valor;
  387.     TNodoDeque *ptrEliminar;
  388.     if (D->inicio) {
  389.         ptrEliminar = D->inicio;
  390.         valor = ptrEliminar->elem;
  391.         D->inicio = D->inicio->sig;
  392.         D->inicio->ant = NULL;
  393.         free(ptrEliminar);
  394.         (D->nElem)--;
  395.         return valor;
  396.     }
  397.     return -1;
  398. }
  399.  
  400. /*Pregunta 4*/
  401.  
  402. int esta_en_lista(int n, TLista *L) {
  403.     TNodo *ptrRec = L->inicio;
  404.     int i;
  405.     for (i = 0; i < L->nElem; i++) {
  406.         if (ptrRec->elem == n)
  407.             return 1;
  408.         ptrRec = ptrRec->sig;
  409.     }
  410.     return 0;
  411. }
  412.  
  413. TLista union_conjuntos(TLista *L1, TLista *L2) {
  414.     TLista LUnion;
  415.     crear_lista(&LUnion);
  416.     TNodo *ptrL1, *ptrL2;
  417.     ptrL1 = L1->inicio;
  418.     ptrL2 = L2->inicio;
  419.  
  420.     int i;
  421.     for (i = 0; i < L1->nElem; i++) {
  422.         if (esta_en_lista(ptrL1->elem, L2))
  423.             insertar_der(&LUnion, ptrL1->elem);
  424.         ptrL1 = ptrL1->sig;
  425.     }
  426.  
  427.     for (i = 0; i < L2->nElem; i++) {
  428.         if (esta_en_lista(ptrL2->elem, L1))
  429.             insertar_der(&LUnion, ptrL2->elem);
  430.         ptrL2 = ptrL2->sig;
  431.     }
  432.  
  433.     return LUnion;
  434. }
  435.  
  436. TLista interseccion_conjuntos(TLista *L1, TLista *L2) {
  437.     TLista LInt;
  438.     crear_lista(&LInt);
  439.     TNodo *ptrL1, *ptrL2;
  440.     ptrL1 = L1->inicio;
  441.     ptrL2 = L2->inicio;
  442.  
  443.     int i;
  444.     for (i = 0; i < L1->nElem; i++) {
  445.         if (!esta_en_lista(ptrL1->elem, L2))
  446.             insertar_der(&LInt, ptrL1->elem);
  447.         ptrL1 = ptrL1->sig;
  448.     }
  449.  
  450.     for (i = 0; i < L2->nElem; i++) {
  451.         if (!esta_en_lista(ptrL2->elem, L1))
  452.             insertar_der(&LInt, ptrL2->elem);
  453.         ptrL2 = ptrL2->sig;
  454.     }
  455.  
  456.     return LInt;
  457. }
  458.  
  459. TLista diferencia_conjuntos(TLista *L1, TLista *L2) {
  460.     TLista LDif;
  461.     crear_lista(&LDif);
  462.     TNodo *ptrL1, *ptrL2;
  463.     ptrL1 = L1->inicio;
  464.     ptrL2 = L2->inicio;
  465.  
  466.     int i;
  467.  
  468.     while (ptrL1) {
  469.         if (esta_en_lista(ptrL1->elem, L2))
  470.             ptrL1 = ptrL1->sig;
  471.         else
  472.             insertar_der(&LDif, ptrL1->elem);
  473.     }
  474.  
  475.     return LDif;
  476. }
  477.  
  478. void crearConjuntoVacio(TLista *L) {
  479.     finalizar_lista(L);
  480. }
  481.  
  482. void insertar_elem_conjunto(TLista *L, int n) {
  483.     if (!esta_en_lista(n, L)) {
  484.         insertar_der(L, n);
  485.     }
  486. }
  487.  
  488. void remover_elem_conjunto(TLista *L, int n) {
  489.     if (esta_en_lista(n, L)) {
  490.         eliminar(L, n);
  491.     }
  492. }
  493.  
  494. int min_conjunto(TLista *L) {
  495.     int min = INT_MAX;
  496.     TNodo *ptrRec = L->inicio;
  497.     int i;
  498.     for (i = 0; i < L->nElem; i++) {
  499.         if (ptrRec->elem < min)
  500.             min = ptrRec->elem;
  501.         ptrRec = ptrRec->sig;
  502.     }
  503.     return min;
  504. }
  505.  
  506. int max_conjunto(TLista *L) {
  507.     int max = 0;
  508.     TNodo *ptrRec = L->inicio;
  509.     int i;
  510.     for (i = 0; i < L->nElem; i++) {
  511.         if (ptrRec->elem > max)
  512.             max = ptrRec->elem;
  513.         ptrRec = ptrRec->sig;
  514.     }
  515.     return max;
  516. }
  517.  
  518. int igual_conjuntos(TLista *L1, TLista *L2) {
  519.     int igualL1 = 1, igualL2 = 1;
  520.     TNodo *ptrL1, *ptrL2;
  521.     ptrL1 = L1->inicio;
  522.     ptrL2 = L2->inicio;
  523.     int i;
  524.     for (i = 0; i < L1->nElem; i++) {
  525.         igualL1 = igualL1 && esta_en_lista(ptrL1->elem, L2);
  526.         ptrL1 = ptrL1->sig;
  527.     }
  528.  
  529.     for (i = 0; i < L2->nElem; i++) {
  530.         igualL2 = igualL2 && esta_en_lista(ptrL2->elem, L1);
  531.         ptrL2 = ptrL2->sig;
  532.     }
  533.  
  534.     return igualL1 && igualL2;
  535. }
  536.  
  537. /*Pregunta 5*/
  538.  
  539. TLista suma_listas(TLista *L1, TLista *L2) {
  540.     TLista LSuma;
  541.     crear_lista(&LSuma);
  542.  
  543.     TPila P1;
  544.     TPila P2;
  545.     crear_pila(&P1);
  546.     crear_pila(&P2);
  547.  
  548.     int res = 0;
  549.     int sum_parcial = 0;
  550.     TNodo *ptrL1, *ptrL2;
  551.     ptrL1 = L1->inicio;
  552.     ptrL2 = L2->inicio;
  553.  
  554.     //se pasan las listas a pilas P1 y P2
  555.     while (ptrL1 != NULL) {
  556.         push(&P1, ptrL1->elem);
  557.         ptrL1 = ptrL1->sig;
  558.     }
  559.  
  560.     while (ptrL2 != NULL) {
  561.         push(&P2, ptrL2->elem);
  562.         ptrL2 = ptrL2->sig;
  563.     }
  564.  
  565.     TNodo *ptrP1 = P1.top;
  566.     TNodo *ptrP2 = P2.top;
  567.  
  568.     //sum_parcial tendra el valor de sumar las dos cimas de las pilas
  569.     //si el valor es mayor a 9, se coloca solo la cifra de mas a la izquierda
  570.     //y el res contendra la otra cifra que se sumara a la siguiente suma
  571.     while (ptrP1 && ptrP2) {
  572.         sum_parcial = (ptrP1->elem) + (ptrP2->elem) + res;
  573.         res = 0;
  574.         if (sum_parcial <= 9) {
  575.             insertar_izq(&LSuma, sum_parcial);
  576.         } else {
  577.             res = sum_parcial / 10;
  578.             sum_parcial = sum_parcial % 10;
  579.             insertar_izq(&LSuma, sum_parcial);
  580.         }
  581.         pop(&P1);
  582.         pop(&P2);
  583.         ptrP1 = P1.top;
  584.         ptrP2 = P2.top;
  585.     }
  586.  
  587.     //se insertan los numeros que pudieron haber quedado en las pilas,
  588.     //pues pueden ser listas de diferentes longitudes
  589.     while (ptrP1) {
  590.         insertar_izq(&LSuma, ptrP1->elem + res);
  591.         ptrP1 = ptrP1->sig;
  592.         res = 0;
  593.     }
  594.  
  595.     while (ptrP2) {
  596.         insertar_izq(&LSuma, ptrP2->elem + res);
  597.         ptrP2 = ptrP2->sig;
  598.         res = 0;
  599.     }
  600.  
  601.     return LSuma;
  602. }
  603.  
  604. TLista resta_listas(TLista *L1, TLista *L2) {
  605.     TLista LResta;
  606.     crear_lista(&LResta);
  607.     if (L1->nElem >= L2->nElem) {
  608.         //difLen es la diferencia de longitudes de las 2 listas
  609.         int difLen = L1->nElem - L2->nElem;
  610.  
  611.         //paso las listas a colas
  612.         TCola C1, C2;
  613.         crear_cola(&C1);
  614.         crear_cola(&C2);
  615.  
  616.         TNodo *ptrRec1, *ptrRec2;
  617.         ptrRec1 = L1->inicio;
  618.         ptrRec2 = L2->inicio;
  619.  
  620.         while (ptrRec1) {
  621.             encolar(&C1, ptrRec1->elem);
  622.             ptrRec1 = ptrRec1->sig;
  623.         }
  624.  
  625.         //como el numero en la lista L1 debe ser mayor,
  626.         //puede tener mas cifras que el de L2, encolo 0 a la C2
  627.         //para que sea mas facil la resta
  628.         if (difLen > 0) {
  629.             int i;
  630.             for (i = 0; i < difLen; i++) {
  631.                 encolar(&C2, 0);
  632.             }
  633.         }
  634.  
  635.         while (ptrRec2) {
  636.             encolar(&C2, ptrRec2->elem);
  637.             ptrRec2 = ptrRec2->sig;
  638.         }
  639.        
  640.         TNodo *ptrC1, *ptrC2, *ptrRecL;
  641.         ptrC1 = C1.inicio;
  642.         ptrC2 = C2.inicio;
  643.         ptrRecL = LResta.inicio;
  644.  
  645.         int lleva = 0;
  646.         while (ptrC1 && ptrC2) {
  647.             int res;
  648.             //res lleva la resta de los numeros que ahora estan en las colas
  649.             //lleva sera 1 si es que el valor que sigue sale negativo de la resta
  650.             //lo cual significa que se le sumara 10 para obtener el valor real
  651.             //y se resta 1 a la anterior resta para luego insertarse a la lista LResta
  652.             res = ptrC1->elem - ptrC2->elem;
  653.             if (lleva == 1) {
  654.                 res += 10;
  655.                 lleva = 0;
  656.             }
  657.             if (ptrC1->sig && ptrC2->sig) {
  658.                 if (ptrC1->sig->elem < ptrC2->sig->elem) {
  659.                     res--;
  660.                     lleva = 1;
  661.                 }
  662.             }
  663.             insertar_der(&LResta, res);
  664.  
  665.             desencolar(&C1);
  666.             desencolar(&C2);
  667.             ptrC1 = C1.inicio;
  668.             ptrC2 = C2.inicio;
  669.         }
  670.        
  671.         //como ha podido quedar 0's a la izquierda en el resultado se eliminan
  672.         ptrRecL = LResta.inicio;
  673.         while (ptrRecL->elem == 0) {
  674.             eliminar_izq(&LResta);
  675.             ptrRecL = ptrRecL->sig;
  676.         }
  677.     }
  678.     return LResta;
  679. }
  680.  
  681. TLista multiplicar_listas(TLista *L1, TLista *L2) {
  682.     TLista LMult;
  683.     crear_lista(&LMult);
  684.    
  685.    
  686.  
  687.  
  688.     return LMult;
  689. }
  690.  
  691. int main(int argc, char** argv) {
  692.     TLista L1, L2, L3;
  693.     TPila P;
  694.  
  695.     crear_lista(&L1);
  696.     insertar_der(&L1, 1);
  697.     insertar_der(&L1, 8);
  698.     insertar_der(&L1, 0);
  699.     insertar_der(&L1, 0);
  700.  
  701.     crear_lista(&L2);
  702.     insertar_der(&L2, 7);
  703.     insertar_der(&L2, 9);
  704.     insertar_der(&L2, 8);
  705.  
  706.     //merge_sort(&L1);
  707.     //merge_sort(&L2);
  708.  
  709.     imprimir_lista(&L1);
  710.     imprimir_lista(&L2);
  711.  
  712.     //imprimePosiciones(&L1,&L2);
  713.  
  714.     //finalizar_lista(&L1);
  715.     //finalizar_lista(&L2);
  716.  
  717.     //crear_pila(&P);
  718.     //push(&P, 2);
  719.     //push(&P, 5);
  720.     //push(&P, 1);
  721.  
  722.     //pop(&P);
  723.  
  724.     //imprime_pila(&P);
  725.     //finaliza_pila(&P);
  726.  
  727.     TLista LS = suma_listas(&L1, &L2);
  728.     imprimir_lista(&LS);
  729.  
  730.     TLista LR = resta_listas(&L1, &L2);
  731.     imprimir_lista(&LR);
  732.  
  733.     return (EXIT_SUCCESS);
  734. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement