Aranyalma2

11het prog

Nov 22nd, 2020
430
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdlib.h>
  2. #include <stdbool.h>
  3. #include <stdio.h>
  4.  
  5. typedef struct ListaElem {
  6.     int adat;
  7.     struct ListaElem *kov;
  8. } ListaElem;
  9.  
  10. /* létrehoz egy listát, benne egy csomó számmal */
  11. ListaElem *lista_letrehoz(void) {
  12.     int szamok[] = { 8, 14, 13, 17, 1, 19, 16, 5, 3, 11, 2,
  13.                      15, 9, 10, 6, 22, 4, 7, 18, 27, -1 };
  14.     ListaElem *lis = NULL;
  15.  
  16.     for (int i = 0; szamok[i] != -1; ++i) {
  17.         ListaElem *u;
  18.         u = (ListaElem*) malloc(sizeof(ListaElem));
  19.         u->kov = lis;
  20.         u->adat = szamok[i];
  21.         lis = u;
  22.     }
  23.     return lis;
  24. }
  25.  
  26. void kiir(ListaElem *eleje){
  27.     ListaElem *mozgo = eleje;
  28.     while (mozgo != NULL){
  29.         printf("%d ", mozgo->adat);
  30.         mozgo = mozgo->kov;
  31.     }
  32. }
  33. int meret(ListaElem *eleje){
  34.     int meret = 0;
  35.     ListaElem *mozgo = eleje;
  36.     while (mozgo != NULL){
  37.         mozgo = mozgo->kov;
  38.         meret++;
  39.     }
  40.     return meret;
  41. }
  42. void felszab(ListaElem *eleje){
  43.     ListaElem *mozgo = eleje;
  44.     ListaElem *mozgokov = mozgo->kov;
  45.     while (mozgo->kov != NULL){
  46.         free(mozgo);
  47.         mozgo = mozgokov;
  48.         mozgokov = mozgokov->kov;
  49.     }
  50.     free(mozgo);
  51. }
  52. ListaElem *beszurEleje(ListaElem *eleje, int szam){
  53.     ListaElem * tmp = (ListaElem*)malloc(sizeof(ListaElem));
  54.     tmp->adat = szam;
  55.     if(eleje == NULL){
  56.         tmp->kov = NULL;
  57.     }
  58.     else{
  59.         tmp->kov = eleje;
  60.     }
  61.     return tmp;
  62. }
  63. ListaElem *beszurVege(ListaElem *eleje, int szam){
  64.     ListaElem *mozgo = eleje;
  65.     ListaElem *lemarad = NULL;
  66.     ListaElem *tmp = (ListaElem*)malloc(sizeof(ListaElem));
  67.     tmp->adat = szam;
  68.     tmp->kov = NULL;
  69.     bool elso = true;
  70.     while(mozgo != NULL){
  71.         lemarad = mozgo;
  72.         mozgo = mozgo->kov;
  73.         elso = false;
  74.     }
  75.     if(!elso)
  76.         lemarad->kov = tmp;
  77.     return elso ? tmp : eleje;
  78. }
  79. ListaElem *keres(ListaElem *eleje, int szam){
  80.     ListaElem *mozgo = eleje;
  81.     while(mozgo != NULL && szam != mozgo->adat){
  82.         mozgo = mozgo->kov;
  83.     }
  84.     return mozgo;
  85. }
  86.  
  87. int main(void) {
  88.     ListaElem *eleje;
  89.  
  90.     eleje = lista_letrehoz();
  91.     eleje = beszurEleje(eleje, 21);
  92.     eleje = beszurVege(eleje, 0);
  93.     kiir(eleje);
  94.     printf("\nMeret: %d\n", meret(eleje));
  95.     printf("Keresett elem pointere: %p\n",keres(eleje, 19));
  96.     printf("Keresett elem pointere: %p\n",keres(eleje, 190));
  97.     felszab(eleje);
  98.  
  99.     return 0;
  100. }
  101.  
RAW Paste Data