ABC(Q)

advertisement
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 yz
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):
{ Q1Q; Qlink(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 {Plink(P); Q1Q; Qlink(Q); Krok 2}
Krok 4. Usuwanie elementu zerowego
Q2Q; link(Q1)Qlink(Q); delete(Q2); Plink(P); Krok 2
Krok 5. Wstawianie nowego wyrazu
New(Q2); coeff(Q2)coeff(P); ABC(Q)ABC(P); link(Q2)Q;
link(Q1)Q2; Q1Q2; Plink(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*
Download