dList* mergeListsD(dList *L1, dList *L2){ dList *L3 = NULL; if (L1 != NULL && L2 == NULL){ L3 = L1; return L3; } if (L1 == NULL && L2 != NULL){ L3 = L2; return L3; //(piti tallentaa L3 kasaan) } if (L1 == NULL && L2 == NULL){ return NULL; } if (L1 != NULL){ L3 = L1; } if (L2 != NULL && (L2->x > L1->x)){ L3 = L2; } if ((L1 != NULL && L2 != NULL) && ( L1->x == L2->x )){ int sum2 = (L1->x) + (L2->x); L3 = createElem(sum2, NULL, NULL); L1=L1->next; L2=L2->next; } dList *permHead = L3; while (L1!=NULL || L2!=NULL){ dList *tmp = NULL; int sum = 0; if (L1!=NULL){ tmp = L1; } if( L2!=NULL && (L1!=NULL || (L2->x < L1->x))){ tmp = L2; } if ((L1 != NULL && L2 != NULL)&&(L1->x == L2->x) ){ sum = (L1->x) + (L2->x); tmp = createElem(sum, L3, NULL); } L3->next = createElem(tmp->x, tmp->prev, tmp->next); L3=L3->next; if (sum){ L1 = L1->next; L2 = L2->next; } else if(tmp==L1){ L1=L1->next; } else if (tmp == L2){ L2 = L2->next; } } return permHead; }
//2.0-------------------------------------------------- int insertBtree(int key, BTree* T){ keys* k = createElem(); // element is created Node* L ; L = T->root; k->key1 = key; firstinsert(k, L, T); //printf("root %d \n",T->root->keez[0]->key1); return 0; }
int main() { int result; poly p; poly b; Elem dat,dat1,dat2; createElem(&dat,0.0,0); createElem(&dat1,0.2,2); createElem(&dat2,0.3,3); create(&p); create(&b); //insertHead(p,dat1); //insertTail(p,dat2); OrderInsert(p,dat2,compareExpn); OrderInsert(p,dat1,compareExpn); traverse(p,print); LocElem(p, dat1, compareBoth,&result,"compareBoth"); createElem(&dat2,0.1,3); OrderInsert(p,dat2,compareExpn); traverse(p,print); createElem(&dat2,-0.1,2); OrderInsert(p,dat2,compareExpn); traverse(p,print); printf("---------------------------------------\n"); createElem(&dat2,-0.3,5); OrderInsert(p,dat2,compareExpn); traverse(p,print); printf("---------------------------------------\n"); //createElem(&dat2,0.5,1); createElem(&dat2,0.4,4); OrderInsert(b,dat2,compareExpn); createElem(&dat2,-0.1,2); OrderInsert(b,dat2,compareExpn); createElem(&dat2,-0.5,8); OrderInsert(b,dat2,compareExpn); createElem(&dat2,-0.9,7); OrderInsert(b,dat2,compareExpn); createElem(&dat2,-0.4,3); OrderInsert(b,dat2,compareExpn); traverse(b,print); printf("---------------------------------------\n"); AddPolyn(p,b); traverse(p,print); printf("---------------------------------------\n"); destroy(&p); destroy(&b); return OK; }
dList* clone(dList *node){ return createElem(node->x, node->prev, node->next); }
dList* createElemNo(int value){ return createElem(value, NULL,NULL); }