Merge sort 2 sorted linked list
You should have added error checking:

 node * newp=(node *)malloc(sizeof(node));
 newp-&gt;data=(char *)malloc(sizeof(strlen(data));


malloc can return NULL if there wont be enough Virtual Adress Space. Would be great if function return error code.

add {} it could bite your next time

  if(listp==NULL) 
   listp=nextp ;
  else
   listp-&gt;nextp=newp;
   //next live goes here, looks like next statment in else, but it's not.


Use PascalCase or camelCase

// initialize mergedlistp;
node* mergedlistendp=NULL; // mergedList is a better name
list* leftlistp = NULL;


Stick to one style, once you have:

if (list1p == NULL) leftlistp=list2p;
if(list2p == NULL) leftlistp = list1p;


another one

  if(listp==NULL) 
   listp=nextp ;


or 

  if(list2p == NULL)
   {leftlistp=list1p; break;}


One statment per line

 if(list2p == NULL)
 {leftlistp=list1p; break;} // put break in the next line.