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;
k->kon=e;
}
else{
k->kon->next=e;
k->kon=e;
}}}
int pobierz (struct kolejka *k){
int w=k->pocz->val;
struct node * pom=k->pocz;
k->pocz=k->pocz->next;
free(pom);
}
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);