Implementation of a templated Singly linked list class in c++
Advice 1

You can move the definition of node into the declaration body of one_way_linked_list. This allows "inheritting" the type parameter t, and, thus, omitting it altogether in the node.

Advice 2

node(t d)
{
    data=d;
    next=NULL;
}


The more C++ way would be:

node(t d) : data{d}, next{nullptr} {}


Advice 3

Most C++ programmers write the type parameters starting from an uppercase letter. In your case, I suggest you rename t to T in the template declaration.

Advice 4

public:
    node&lt;t&gt; *head=NULL;
    node&lt;t&gt; *prev=NULL;


Here, you expose the implementation details. Move the two under a private:. Also, write nullptr instead of NULL. 

Advice 5 

prev: a better name is tail.

Advice 6

list_create: a better name is add or append.

Advice 7

template&lt;typename t&gt;
void one_way_linked_list&lt;t&gt;::list_delete()
{
    node&lt;t&gt; *ptr=new node&lt;t&gt;();
    ptr-&gt;data=this-&gt;head-&gt;data;
    while(ptr!=NULL)
    {
        ptr=ptr-&gt;next;
        delete ptr;
    }
    delete this-&gt;head;
    head=NULL;
    cout&lt;&lt;"Deleted"&lt;&lt;endl;
}


rewrite as:

node&lt;t&gt;* next;
node&lt;t&gt;* current = head;

while (current) {
    next = current-&gt;next;
    delete current;
    current = next;
}