the code so far had warnings and doesnt seem to perform correctly . please if you could explain what i have wrong . thanks .
#include
#include
struct listNode
{
int data;
struct listNode* nextPtr;
};
typedef struct listNode node;
void insert (node *);
void showList(node *);
node *merge(node*,node*);
int main (void)
{
int choose;
node*list1,*list2;
{
printf(" choose and enter: ");
printf(" 1. first list ");
printf(" 2. second list ");
printf(" 3. merge two list ");
printf(" 4. exit ");
printf(" ? ");
scanf("%d",&choose );
switch (choose)
{
case 1 :
printf(" enter values for first list(0 to end):");
list1 = (node *)malloc(sizeof(node *));
insert(list1);
printf(" list1 = ");
showList(list1);
break;
case 2:
printf(" values for second list(0 to end): ");
list2= (node*)malloc(sizeof(node*));
insert(list2);
printf(" list 2 = ");
showList(list2);
break;
case 3:
printf(" after merge:");
list1= merge(list1,list2);
printf("merged list is :");
showList(list1);
break;
case 4 :
break;
default:
printf(" enter choice! ");
break;
}
}while (choose !=4);
return (0);
}
void insert (node*list)
{
printf(" enter value:");
scanf("%d", &list->data);
if (list->data == 0 )
{
(list->nextPtr);
}
else
{
list->nextPtr= (node*)malloc(sizeof(node));
insert (list->nextPtr);
}
}
void showList (node* list)
{
node*p;
for(p=list;p->nextPtr != NULL; p=p-> nextPtr)
printf("%d",p->data);
if (list->nextPtr==NULL)
{
printf(" list is empty ");
}
}
node* merge(node*list1,node *list2)
{
node mergeList;
node*temp=&mergeList;
while (list1->nextPtr != NULL && list2 ->nextPtr->nextPtr !=NULL)
{
if (list1->datadata)
{
temp->nextPtr=list1;
list1= list1->nextPtr;
}
else
{
temp->nextPtr=list2;
list2=list2->nextPtr;
}
temp=temp->nextPtr;
}
if (list1 ->nextPtr == NULL)
temp->nextPtr= list2;
if (list2->nextPtr->nextPtr==NULL)
temp->nextPtr = list1;
return mergeList.nextPtr;
}