GoralWMoro

Zadania z listami od 1 do 4

Dec 4th, 2018
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.66 KB | None | 0 0
  1. #include <stdio.h>
  2. #include "stdlib.h"
  3. typedef struct Bron Bron;
  4.  
  5. struct Bron{
  6.    int numer_broni;
  7.     Bron *next;
  8. };
  9.  
  10. //dodawanie broni w N miejsce razem z pierwszym i ostatnim
  11. void dodaj_bron(Bron *lista, int miejsce){
  12.     int i = 1;
  13.     Bron *first = lista;
  14.     Bron *dodaj = (Bron *)malloc(sizeof(Bron));
  15.     printf("Wprowadz numer katalogowy broni: ");
  16.     scanf("%d", &dodaj->numer_broni);
  17.     if(miejsce == 0){
  18.         dodaj->next = first;
  19.         lista = dodaj;
  20.     }else {
  21.         while (first != NULL) {
  22.             if (i == miejsce) {
  23.                 dodaj->next = first->next;
  24.                 first->next = dodaj;
  25.             }
  26.             first = first->next;
  27.             i++;
  28.         }
  29.         if(miejsce > i){
  30.             first->next = dodaj;
  31.             dodaj->next = NULL;
  32.         }
  33.     }
  34.  
  35.     printf("\n Lista broni. \n");
  36.     first = lista;
  37.     while (first != NULL) {
  38.         printf("Numer katalogowy: %d\n", first->numer_broni);
  39.         first = first->next;
  40.     }
  41. }
  42.  
  43.  
  44. void dodaj_pierwszy(Bron *lista){
  45.     Bron *dodaj = (Bron *)malloc(sizeof(Bron));
  46.     Bron *first = lista;
  47.  
  48.     dodaj->numer_broni = 20;
  49.     if(first == NULL) {
  50.         dodaj->next = NULL;
  51.     }
  52.         dodaj->next = first;
  53.         lista = dodaj;
  54.  
  55.  
  56.     printf("\n Lista broni. \n");
  57.     first = lista;
  58.     while (first != NULL) {
  59.         printf("Numer katalogowy: %d\n", first->numer_broni);
  60.         first = first->next;
  61.     }
  62.  
  63. }
  64. // usuwanie pierwszego i ostatniego
  65. void usuwanie(Bron *lista){
  66.     Bron *first = lista;
  67.     Bron *prev;
  68.     // usuwanie pierwszego elementu
  69.     lista = first->next;
  70.     free(first);
  71.     // usuwanie ostatniego elementu
  72.     first = lista;
  73.     while (first->next != NULL) {
  74.         prev = first;
  75.         first = first->next;
  76.     }
  77.  
  78.     prev->next = NULL;
  79.     free(first);
  80.     // wyswietlanie
  81.     first = lista;
  82.     while (first != NULL) {
  83.         printf("Numer katalogowy: %d\n", first->numer_broni);
  84.         first = first->next;
  85.     }
  86.  
  87. }
  88.  
  89. int main() {
  90.     Bron *Bron1 = (Bron*)malloc(sizeof(Bron));
  91.     Bron *Bron2 = (Bron*)malloc(sizeof(Bron));
  92.     Bron *Bron3 = (Bron*)malloc(sizeof(Bron));
  93.     Bron *Bron4 = (Bron*)malloc(sizeof(Bron));
  94.     Bron1->numer_broni = 1;
  95.     Bron2->numer_broni = 2;
  96.     Bron3->numer_broni = 3;
  97.     Bron4->numer_broni = 4;
  98.     Bron1->next = Bron2;
  99.     Bron2->next = Bron3;
  100.     Bron3->next = Bron4;
  101.     Bron4->next = NULL;
  102.     int numer;
  103.     printf("Podaj miejsce wstawienie nowego elementu. Pierwszy element to 0!\n");
  104.     scanf("%d", &numer);
  105.     //dodaj_bron(Bron1, numer);
  106.  
  107.     //usuwanie(Bron1);
  108.     Bron *head = NULL;
  109.    dodaj_pierwszy(head);
  110.     return 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment