Zajęcia 11. 1. (wspólne) Zaprojektuj dynamicznie wiązaną strukturę

Transkrypt

Zajęcia 11. 1. (wspólne) Zaprojektuj dynamicznie wiązaną strukturę
Zajęcia 11.
1. (wspólne) Zaprojektuj dynamicznie wiązaną strukturę realizującą stos (nieograniczony) oraz
operacje na nim. Potrzebna będzie struktura definiująca element stosu Node zawierająca
wskaźnik do kolejnego elemntu oraz przechowywaną wartość:
Node * next
int elem
W mainie pusty stos tworzymy jak element:
Node top
Napisz funkcje globalne:
1. void push(Node * top, int elem) – wstawia element na szczyt stosu
2. void pop(Node* top) – usuwa element ze szczytu stosu
3. void get(Node* top) – pobiera element ze szczytu stosu
4. void write(Node * top) – wypisuje stos
2. (samodzielne) Zaprojektuj dynamicznie wiązaną strukturę realizującą listę dwukierunkową
oraz zaimplementuj operacje na niej. Potrzebna będzie struktura List przechowująca
początek i koniec listy
Node * first,
Node * last.
Element listy będzie typu Node i będzie przechowywał wskazania na element poprzedzający
i następujący po nim:
Node * next,
Node * prev,
oraz wartość elementu. Należy napisać funkcje:
1. void add_last(List * list, int elem); // dodaje element na koniec listy (może być pusta)
2. void add_first(List * list, int elem); // dodaje element na początek listy (może być pusta)
3. void add(List * list, int elem, int nr); // dodaje element na pozycję nr licząc od zera
4. void del_last(List * list); // usuwa element z końca listy (może być pusta
5. void del_first(List * list); // usuwa element z początku listy (może być pusta
6. void del(List * list, int nr); // usuwa element z podanej pozycji w liście (może być pusta)
7. void write(List * list); // wypisuje listę