Algorytmy i struktury danych Dodawanie wielomianów Piotr Kustra Faculty of Metals Engineering and Industrial Computer Science Department of Applied Computer Science and Modeling Reprezentacja przez strukturę A coeff B C coeff * x y z ± A B C * 3 * 5 4 2 3 5* x y z ± 4 2 Reprezentacja przez strukturę x yz 1 1 1 0 + 1 0 0 * + 0 1 0 * + 0 0 1 * - 0 0 1 * x 2y z 2 1 -2 -1 0 + 2 0 0 * + 0 1 0 * + 0 0 1 * - 0 0 1 * Wskaźniki P i Q wskazują na pierwsze elementy struktury wielomianu Krok 1. Inicjalizacja. P i Q wskazują na pierwsze elementy struktury wielomianu Q1 Q, Q link(Q) Krok 2. Porównanie: Jeśli ABC(P)<ABC(Q): { Q1Q; Qlink(Q); powtórz krok 2} Wpp{ jeśli ABC(P) = ABC(Q) to krok 3; Wpp p krok 5} Krok 3. Dodawanie współczynników jeśli ABC(P)<0: STOP (zatrzymanie algorytmu) Wpp { coeff(Q) coeff(Q)+ coeff(P); Jeśli coeff(Q)=0; to krok 4 Wpp {Plink(P); Q1Q; Qlink(Q); Krok 2} Krok 4. Usuwanie elementu zerowego Q2Q; link(Q1)Qlink(Q); delete(Q2); Plink(P); Krok 2 Krok 5. Wstawianie nowego wyrazu New(Q2); coeff(Q2)coeff(P); ABC(Q)ABC(P); link(Q2)Q; link(Q1)Q2; Q1Q2; Plink(P); Krok 2. Wykład Dr. Danuta Szeliga Kolejne kroki P Q1 1 1 1 0 +1 0 0 * +0 1 0 * +0 0 1 * - 001* 1 -2 -1 0 +2 0 0 * +0 1 0 * +0 0 1 * - 001* Q Kolejne kroki P 1 1 1 0 +1 0 0 * +0 1 0 * +0 0 1 * - 001* Q Q1 1 -2 -1 0 +2 0 0 * +0 1 0 * +0 0 1 * - 001* ABC(P)<ABC(Q) Kolejne kroki P 1 1 1 0 +1 0 0 * +0 1 0 * +0 0 1 * - 001* 1 +1 0 0 * Q2 Q Q1 1 -2 -1 0 +2 0 0 * +0 1 0 * +0 0 1 * - 001* Kolejne kroki P 1 1 1 0 +1 0 0 * +0 1 0 * +0 0 1 * - 001* ABC(P)==ABC(Q) Q2 Q1 Coeff(Q)=Coeff(Q)+Coeff(P) Q 1 1 -1 -2 -1 0 +2 0 0 * +1 0 0 * +0 1 0 * +0 0 1 * - 001* Kolejne kroki P 1 1 1 0 +1 0 0 * +0 1 0 * +0 0 1 * - 001* Q2 Q1 Q 1 1 -1 -1 0 +2 0 0 * +1 0 0 * +0 1 0 * +0 0 1 * - 001* ABC(P)<ABC(Q) Kolejne kroki P 1 1 1 0 +1 0 0 * +0 1 0 * +0 0 1 * - 001* ABC(P)==ABC(Q) ? Q2 Q1 Q 1 1 -1 -1 0 +2 0 0 * +1 0 0 * +0 1 0 * +0 0 1 * - 001*