Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct Element { //Tworzę strukturę, która przechowuje
- int x; //liczbę całkowitą oraz wskaźnik
- struct Element *next; //na kolejną strukturę
- };
- struct Element *beginList = NULL; //Tworzę wskaźnik na strukturę i ustawiam go na NULL
- void addToList(int numb); //Nagłówki funkcji
- void showList();
- void removeFirstElement();
- void removeLastElement();
- int main()
- {
- addToList(10); //Dodaje dla testu kilka elementów do listy
- addToList(0);
- addToList(8);
- addToList(7);
- addToList(2);
- showList(); //Wyświetlam zawartośc listy
- removeFirstElement();
- printf("\n\n");
- showList();
- removeLastElement();
- printf("\n\n");
- showList();
- return 0;
- }
- void addToList(int numb){
- struct Element *newElement = malloc(sizeof(struct Element)); //Alokuję pamięć na nowy element listy
- newElement->x = numb; //Ustawiam liczbę w nowym elemencie listy
- if(beginList != NULL){ //Jeżeli wskaźnik na początek listy nie wskazuje na NULL to:
- struct Element *help = beginList; //Tworzę pomocniczy wskaźnik na strukturę
- while(help != NULL){ //Przechodzę w pętli while przez całą listę
- if(help->next == NULL){ //Jeśli wskaźnik help jest ustawiony na ostatni element listy to:
- help->next = newElement; //Ustawaim wskaźnik help->next na nowy element listy
- newElement->next = NULL; //Oraz wskażnik next nowego elementu ustawiam na NULL
- }
- help = help->next; //Przestawiam wskaźnik help na kolejny element listy
- }
- }
- else{ //Jeżeli wskaźnik na początek listy wskazuje na NULL (lista jest pusta) to:
- beginList = newElement; //Ustawiam globalny wskaźnik na początek listy na nowy element
- beginList->next = NULL; //Oraz wskaźnik next nowego elemenyu ustawiam na NULL
- }
- }
- void showList(){
- struct Element *help = beginList; //Tworzę pomocniczy wskaźnik na strukturę
- while(help != NULL){ //Przechodzę w pętli while przez całą listę
- printf("%d ",help->x); //W każdym obejściu wypisuje zawartość x w strukturze
- help=help->next; //Przestawiam wskaźnik help na kolejny element listy
- }
- }
- void removeFirstElement(){
- if(beginList != NULL){
- struct Element *help = beginList;
- beginList = beginList->next;
- free(help);
- }
- else{
- printf("Lista jest pusta!");
- }
- }
- void removeLastElement(){
- if(beginList != NULL){
- struct Element *help = beginList;
- struct Element *help2 = beginList->next;
- while(help != NULL){
- if(help2->next == NULL){
- free(help2);
- help->next = NULL;
- }
- help = help->next;
- help2 = help2->next;
- }
- }
- else{
- printf("Lista jest pusta!");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement