Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- struct Kolejka{
- int rozmiar;
- double* tab;
- double* poc;
- double* kon;
- };
- typedef struct Kolejka Kolejka;
- Kolejka nowaKolejka(int rozmiar){
- Kolejka k;
- k.rozmiar=rozmiar;
- k.tab=malloc(rozmiar*sizeof(double));
- if(k.tab==NULL){
- printf("Brak pamieci");
- exit(1);
- }
- k.poc=k.tab;
- k.kon=k.poc;
- return k;
- }
- void dodaj(Kolejka* k, double d){
- if(k->kon==k->poc+k->rozmiar){
- if(k->poc < k->tab){
- k->kon=k->tab;
- *(k->kon)=d;
- k->kon++;
- }
- else{
- k->tab=(double*)realloc(k->tab, k->rozmiar*2);
- *(k->kon)=d;
- k->kon++;
- }
- }else{
- *(k->kon)=d;
- k->kon++;
- if(k->kon == k->poc){
- k->rozmiar*=2;
- k->poc= k->poc - k->tab; k->kon = k->rozmiar;
- k->tab=(double*)realloc(k->tab, k->rozmiar);
- k->poc = k->poc + k->tab; k->kon = k->kon + k->tab;
- for(double* i = k->tab; i<k->poc; i++)
- *(k->kon++)=*i;
- }
- }
- }
- double pobierz(Kolejka* k){
- if(k->poc!=k->kon)
- return *k->poc++;
- else return NAN;
- }
- _Bool czyPusta(Kolejka* k){
- if(k->poc==k->kon) return 1;
- else return 0;
- }
- void oproznij(Kolejka* k){
- k->poc=k->tab;
- k->kon=k->poc;
- }
- void wypisz(Kolejka *k){
- printf("\npoc: %p kon: %p \n", k->poc, k->kon);
- for(double* i = k->poc; i<k->kon; i++)
- printf("%f\t",*i);
- printf("\n");
- }
- int main(){
- Kolejka k = nowaKolejka(3);
- dodaj(&k, 1);
- wypisz(&k);
- dodaj(&k, 2);
- wypisz(&k);
- dodaj(&k, 3);
- printf("%f\n", pobierz(&k));
- dodaj(&k, 4);
- wypisz(&k);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement