Template lista

di il
1 risposte

Template lista

Salve, ho implementato le funzioni base per realizzare una lista, vorrei renderla più generica facendo si che diventi un template
/*
 * list.h
 *
 *  Created on: 12/mag/2013
 *      Author: olivierognn
 */

#ifndef LIST_H_
#define LIST_H_
#include <iostream>
using namespace std;

class list{
	struct node{
		int data;
		node * next;
	};

	node *head;
public:
	list(){
		head=0;
		cout<<"\nLista inizializzata\n";
	}

	void push(int value){
		cout<<value<<" aggiunto;";
		node*n=new node;
		n->data=value;
		n->next=head;
		head=n;
	}

	void pop(){
		node * n=head->next;
		delete head;
		head=n;

	}
	void print(){
		cout<<"\nFunzione print richiamata";

		node * temp=head;
		while (temp!=0){
		cout<<temp->data;
		temp=temp->next;
		}
	}

	~list(){
		while(head!=0){
			node*n=head->next;
			delete head;
			head=n;
		}
	}
};

#endif /* LIST_H_ */
dato che non mi riesce chiedo qui una mano

1 Risposte

  • Re: Template lista

    Ho modificato così:
    /*
     * list.h
     *
     *  Created on: 12/mag/2013
     *      Author: olivierognn
     */
    
    #ifndef LIST_H_
    #define LIST_H_
    #include <iostream>
    using namespace std;
    template <class T>
    class list{
    	struct node{
    		T data;
    		node * next;
    	};
    
    	node *head;
    public:
    	list(){
    		head=0;
    		cout<<"\nLista inizializzata\n";
    	}
    
    	void push(T value){
    		cout<<value<<" aggiunto;";
    		node*n=new node;
    		n->data=value;
    		n->next=head;
    		head=n;
    	}
    
    	void pop(){
    		node * n=head->next;
    		delete head;
    		head=n;
    
    	}
    	void print(){
    		cout<<"\nFunzione print richiamata";
    
    		node * temp=head;
    		while (temp!=0){
    		cout<<temp->data;
    		temp=temp->next;
    		}
    	}
    
    	~list(){
    		while(head!=0){
    			node*n=head->next;
    			delete head;
    			head=n;
    		}
    	}
    };
    
    #endif /* LIST_H_ */
    funziona se nel main uso:
    int main(){
    	list<float> l;
    	l.push(1.2);
    	l.push(2);
    	l.push(3);
    	l.push(4);
    	l.print();
    	l.pop();
    	l.print();
    
    }
    
    funziona, ma è il metodo corretto per procedere?
Devi accedere o registrarti per scrivere nel forum
1 risposte