Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* CABECERA */
- #ifndef PREG8_H
- #define PREG8_H
- typedef struct nodo{
- int num;
- int x;
- int y;
- struct nodo *ptrSig;
- int marca;
- }TNodo;
- typedef struct{
- TNodo *inicio;
- }TLista;
- void crearLista(TLista*);
- void imprimirLista(TLista*);
- void listaUnitaria(TLista *,int,int,int);
- void insertarIzq(TLista*,int,int,int);
- TLista sumaPolinomios(TLista*,TLista*);
- #endif /* PREG8_H */
- /* IMPLEMENTACION */
- #include <stdlib.h>
- #include <stdio.h>
- #include "preg8.h"
- void crearLista(TLista*lista){
- lista->inicio = NULL;
- }
- void imprimirLista(TLista*lista){
- TNodo *ptrRec;
- ptrRec = lista->inicio;
- while(ptrRec){
- printf("%4dx%dy%d",ptrRec->num,ptrRec->x,ptrRec->y);
- ptrRec = ptrRec->ptrSig;
- }
- printf(" NULL\n");
- }
- void listaUnitaria(TLista *lista,int num, int x, int y){
- TNodo *ptrNuevo;
- ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
- ptrNuevo->num = num;
- ptrNuevo->x = x;
- ptrNuevo->y = y;
- ptrNuevo->ptrSig = NULL;
- lista->inicio = ptrNuevo;
- }
- void insertarIzq(TLista*lista,int num,int x,int y){
- TNodo *ptrNuevo;
- ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
- ptrNuevo->num = num;
- ptrNuevo->x = x;
- ptrNuevo->y = y;
- ptrNuevo->ptrSig = NULL;
- ptrNuevo->marca = 0;
- if (lista->inicio == NULL){
- listaUnitaria(lista,num,x,y);
- }else{
- ptrNuevo->ptrSig = lista->inicio;
- lista->inicio = ptrNuevo;
- }
- }
- TLista sumaPolinomios(TLista*lista1,TLista*lista2){
- TNodo *ptrRec,*ptrRec2;
- ptrRec = lista1->inicio;
- while(ptrRec){
- ptrRec2 = lista2->inicio;
- while(ptrRec2 && (ptrRec->x != ptrRec2->x || ptrRec->y != ptrRec2->y)){
- ptrRec2 = ptrRec2->ptrSig;
- }
- if (ptrRec2 && (ptrRec->x == ptrRec2->x && ptrRec->y == ptrRec2->y)){
- ptrRec->num = ptrRec2->num + ptrRec->num;
- ptrRec2->marca = 1;
- }
- ptrRec = ptrRec->ptrSig;
- }
- ptrRec2 = lista2->inicio;
- while (ptrRec2){
- if(ptrRec2->marca==0)
- insertarIzq(lista1,ptrRec2->num,ptrRec2->x,ptrRec2->y);
- ptrRec2 = ptrRec2->ptrSig;
- }
- return *lista1;
- }
- /* MAIN */
- #include <stdio.h>
- #include <stdlib.h>
- #include "preg8.h"
- int main(int argc, char** argv) {
- TLista lista1,lista2;
- TLista resultado;
- crearLista(&lista1);
- crearLista(&lista2);
- insertarIzq(&lista1,4,1,2);
- insertarIzq(&lista1,3,1,4);
- insertarIzq(&lista1,1,3,2);
- insertarIzq(&lista1,6,3,5);
- insertarIzq(&lista1,2,5,0);
- insertarIzq(&lista2,3,1,2);
- insertarIzq(&lista2,5,5,0);
- insertarIzq(&lista2,6,3,2);
- insertarIzq(&lista2,1,5,7);
- insertarIzq(&lista2,2,1,6);
- insertarIzq(&lista2,5,3,0);
- insertarIzq(&lista2,2,1,8);
- imprimirLista(&lista1);
- imprimirLista(&lista2);
- printf("\n\n\n");
- resultado = sumaPolinomios(&lista1,&lista2);
- imprimirLista(&resultado);
- return (EXIT_SUCCESS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement