Witam,
Mam problem z poprawnym wykorzystaniem szablonów w implementacji listy dwukierunkowej, a dokładnie przy wywoływaniu funkcji i określaniu jej argumentów. Będę wdzięczny, gdyby ktoś podpowiedział, gdzie robię błąd oraz chociaż trochę przybliżył wykorzystanie szablonów w tym przypadku.
Za błędy w publikacji wątku z góry przepraszam.
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <cmath>
#include <windows.h>
using namespace std;
template <typename el>
struct element_listy
{
el dane1;
el dane2;
element_listy *prev=NULL;
element_listy *next=NULL;
};
template <typename l>
struct lista
{
l rozmiar=0;
element_listy<l> *first=NULL;
element_listy<l> *last=NULL;
};
template <typename dnenkl>
void dodanie_nowego_elementu_na_koniec_listy(const dnenkl &dane1, const dnenkl &dane2, dnenkl &lista, dnenkl &nowy)
{
clock_t czas_start=clock();
nowy->dane1=dane1;
nowy->dane2=dane2;
nowy->next=NULL;
if(lista.first==NULL)
{
nowy->prev==NULL;
lista->first=nowy;
lista->last=nowy;
}
else
{
nowy->prev=lista->last;
(nowy->prev)->next=nowy;
}
lista->last=nowy;
lista->rozmiar++;
clock_t czas_stop=clock();
double czas=(czas_stop-czas_start)/(double)CLOCKS_PER_SEC;
cout<<"Operacja dodania nowego elementu na koniec listy zajela:"<<czas<<endl;
};
int main()
{
srand(time(NULL));
lista<int> *lista;
int nr_operacji;
do
{
cout<<"1 - Dodaj nowy element na koniec listy"<<endl;
cout<<"0 - Zakocz dzialanie programu"<<endl;
cout<<"Wybierz numer operacji: "<<endl;
cin>>nr_operacji;
switch(nr_operacji)
{
case 1:
element_listy<int> *nowy;
nowy = new element_listy<int>;
dodanie_nowego_elementu_na_koniec_listy( (rand()%1001), ((rand()%26)+65), lista, nowy);
break;
case 2:
break;
}
}while (nr_operacji!=0);
return 0;
}