C++ , 210210 190 bytes
My First Try At Golfing !
#include<iostream>
int g(char*a){char k,j,d;std::cout<<*a;a++;for(;*a;a++){for(j=*(a-1),d=j-*a,k=d>0?d>13?62:60:d<-13?60:62;j!=*a;j+=d>0?d>13?1:-1:d<-13?=*a;j+=k-1:161,j=j<97?122:j>122?97:j)std::cout<<k;std::cout<<'*';}}
k stores which of < , > or * to print .At first it simply prints the first element of array then runs a loop for a from first to last element of array . j stores the previous element and then by comparing if j closer to *a by < or > set k to < ,> respectively and then print k then run this loop until j becomes equal to p . Then after every ending of second loop print * .