Dzis kontynuować będziemy temat kolejek i stosów. Zacznijmy od kolejki. Popatrzmy jak powinna wyglądać deklaracja kolejki:

struct node{

int val;

struct node * next;

}

struct kolejka{

struct node *pocz;

struct node *kon;

}

void init(struct kolejka *k){

k->pocz=NULL;

k->kon=NULL;

}

void int pusta (struct kolejka *k){

return k->pocz==NULL;

}

void dodaj (struct kolejka *k, int x){

struct node *e;

e=(struct node *) malloc (sizeof ) struct node;

e->val=x;

e->next=NULL;

if(e!=NULL){

if(pusta(k)){

k->pocz=e;

0x08 graphic
k->kon=e;

0x08 graphic
}

else{

k->kon->next=e;

k->kon=e;

}}}

0x08 graphic
int pobierz (struct kolejka *k){

int w=k->pocz->val;

0x08 graphic
0x08 graphic
struct node * pom=k->pocz;

0x08 graphic
k->pocz=k->pocz->next;

free(pom);

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
}

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

main(){

struct kolejka k;

init(&k)

A teraz popatrzmy, jak wygląda deklaracja stosu:

struct node{

int val;

struct node * next;

}

struct stos{

struct node * szczyt;

}

void init(struct stos *s){

s->szczyt=NULL;

}

int empty(struct stos *s){

return s->szczyt==NULL;

}

int push(struct stos *s, int x){

struct node *e;

e=(struct node *) malloc (sizeof ) struct node;

e->val=x;

if(e!=NULL){

e->next=x->szczyt;

s->szczyt=e;

}

}

int pop(struct stos *s){

int w=stos->szczyt->val;

struct node *pom=s->szczyt;

szczyt=pom->next;

free(pom);

return w;

}

10

20

30

40

kon, e

pocz, lista

w=lista->val;

pocz=lista->next;

free(lista);

lista=pocz;

return(w);