Code con liste

streghettaalice
Ancora problemi con le liste.
Questa è l'interfaccia di una coda mediante liste:
/*Implementazione del queue ADT */
  
    /*Liste concatenate*/
  
 #include <stdio.h>
 #include <stdlib.h>
 #include "queueADT3.h"
 
 
 
 
 
 struct node{    /*struttura del nodo*/
    Item data;  
	struct node *next;
	};
	
	
	struct queue_type{
	  struct node *top;/*puntatore al primo nodo della lista*/
	  struct node *end;
	  };
	  
	//N.B. avremmo potuto mettere struct node*Stack come puntatore al primo nodo ma così
	//avremmo dovuto cambiare il client 
	
	static void terminate(const char *message)
	{
	printf("%s\n",message);
	exit(EXIT_FAILURE);
	}
	
	
	
	Queue create(void)
	{
	/*Alloco nodo*/
	Queue s=malloc(sizeof(struct queue_type));/*puntatore alla struttura*/
	
	if(s==NULL)
	  terminate("Error in create:queue could not be created");
	  
	 s->top=NULL;
	 s->end=NULL;
	 return s;
	}
	
	
	
	void destroy(Queue s)
	{
	make_empty(s);
	free(s);
	}
	
	
	void make_empty(Queue s)
	{
	while(!is_empty(s));
	  dequeue(s);
	}
	
	
	
	
	bool is_empty(Queue s)
	{
	return s->top==NULL;
	
	}
	
	
	
	
	bool is_full(Queue s)
	{
	   return false;
	}
	
	
	
/*Inserimento del primo elemento */
	void enqueue1(Queue s, Item i)
	{
	  struct node *new_node=malloc(sizeof(struct node));
	  
	   if(new_node==NULL)
	     terminate("Error in enqueue:queue is full");
		  new_node->data=i;
		  
		  new_node->next=NULL;
		  s->top=new_node;/*sia s->top che s->end puntano al nodo (unico )*/
		  s->end=new_node;
		 
	   }
	   
	
	
	
	/*Inserimento successivi elementi*/
void enqueue(Queue s, Item i)
	{
	  struct node *new_node=malloc(sizeof(struct node));
	  
	   if(new_node==NULL)
	     terminate("Error in enqueue:queue is full");
		  new_node->data=i;
		  
		  new_node->next=NULL;
		  s->end->next=new_node;
		  s->end=new_node;
		 
	   }
	   
	   
	   
	   Item dequeue(Queue s)
	   {
	    struct node *old_top;
	   Item i;
	   
	   if(is_empty(s))
	     terminate("Error in dequeue:queue is empty");
		  
		  old_top=s->top;
		  i=old_top->data;
		  s->top=old_top->next;
		  free(old_top);
		  return i;
	   
	   }
	  
	

Risposte
apatriarca
E quale sarebbe il problema?

streghettaalice
nel controllo se la coda è vuota!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.