39023

39023



116


ROZDZIAŁ 19. TYPY ZŁOŻONE

Implementacja listy

W języku C aby stworzyć listę musimy użyć struktur. Dlaczego? Ponieważ musimy przechować co naj mniej dwie wartości:

1.    pewną zmienną (np. liczbę pierwszą z przykładu)

2.    wskaźnik na kolejny element listy

Przyjmijmy, że szukając liczb pierwszych nie przekroczymy możliwości typu unsigned long:

typedof struct element {

struct element *next; /• wskaźnik na kolejny element listy »/ unsigned long val; /* przechowywana wartość */

} el.listy;

Zacznijmy zatem pisać nasz eksperymentalny program, do wyszukiwania liczb pierwszych.

Pierwszą liczbą pierwszą jest liczba 2 Pierwszym elementem naszej listy będzie zatem struktura. która będzie przechowywała liczbę 2. Na co będzie wskazywało pole next? Ponieważ na początku działania pnigramu będziemy mieć tylko jeden element listy, pole next powinno wskazywać na NULL. Umówmy się zatem, że pole next ostatniego elementu listy będzie wskazywało NULL po tym poznamy, że lista się skończyła.

sinclude <stdio.h>

Sinclude <stdlib.h> typedef struct element { struct olomont *next; unsigned long val;

} el.listy;

el.listy *first; /* pierwszy element listy »/

int main O

{

unsigned long i - 3; /• szukamy liczb pierwszych u zakresie od 3 do 1000 •/

const unsigned long END - 1000;

first ■ malloc (sizeof(el.listy));

first->val - 2;

first->next ■ NULL;

for (;i<-END;~i) {

/• tutaj powinien znajdować się kod, który sprawdza podzielność sprawdzanej liczby przez

poprzednio znalezione liczby pierwsze oraz dodaje liczbę do listy u przypadku stwierdzenia że jest ona liczbą pierwszą. */

>

wypisz_liste(first); return 0;

Na początek zajmiemy się wypisywaniem listy. W tym celu będziemy musieli "odwiedzić" każdy element listy. Elementy listy są połączone polem next, aby przeglądnąć listę użyjemy następującego algorytmu:

1.    Ustaw wskaźnik roboczy na pierwszym elemencie listy

2.    Jeśli wskaźnik ma wartość NULL. przerwij

3.    Wypisz element wskazywany przez wskaźnik

4.    Przesuń wskaźnik na element, który jest wskazywany przez pole next



Wyszukiwarka

Podobne podstrony:
144 ROZDZIAŁ 19. TYPY ZŁOŻONE e ■ A; u.a • 0; 3.a • 0; return e ♦ u.a + s.a;} Nie jest to jednak
118 ItOZDZIAL 19. TYPY ZŁOŻONE i żadna z nich nie będzie dzieliła liczby i, możemy liczbę i dodać do
142 ItOZDZIAL 19. TYPY ZŁOŻONE kierunek ■ W_DOL; printf("Xi

(Grupa definicji QU1CKC0DE)O (Koniec QUICKCODE) %DEFINIOWANIE GRUPY DO LISTY GRUP (*) Aby stworzyć g
16 Rozdział 2. Inne typy danych P = 2 1 + s p=l+4*s~3 P = 3 1 + 4s Aby otrzymać pierwiastki tego
19 Rozdział 2. Inne typy danych 2.2.1. Lista zwykła listO Lista zwykła jest zbiorem obiektów dostępn
ScanImage149 201 Rozdział 19: Semiotyka strukturalna elementy obrazu są jednostkami przenoszącymi zł
czasowniki złozone rozdzielnie niemiecki(1) CZASOWNIKI ZŁOŻONE ROZDZIELNIE Większość przedrostków w
Habermas10 116 Rozdział III Tak więc na przykład F. Michelman dostrzega w amerykańskiej tradycji kon

więcej podobnych podstron