eccolo qua per intero:
codice:#include<stdio.h> struct list{ int i; struct list *nextPtr; }; typedef struct list List; typedef List *List1Ptr; void insert(List1Ptr *sPtr, int val); void printL(List1Ptr currPtr); List1Ptr merge(List1Ptr *s1Ptr, List1Ptr *s2Ptr); int main(void) { List1Ptr start1Ptr=NULL; List1Ptr start2Ptr=NULL; List1Ptr start3Ptr=NULL; int i; for(i=0;i<20;i++){ if(i%2==0){ insert(&start1Ptr,i); } else insert(&start2Ptr,i); } printL(start1Ptr); printL(start2Ptr); start3Ptr=merge(&start1Ptr,&start2Ptr); printL(start3Ptr); return 0; } void insert(List1Ptr *sPtr, int val) { List1Ptr newPtr; List1Ptr prevPtr; List1Ptr currPtr; newPtr=malloc(sizeof(List)); if(newPtr!=NULL){ newPtr->i=val; newPtr->nextPtr=NULL; prevPtr=NULL; currPtr=*sPtr; while(currPtr!=NULL&&val>currPtr->i){ prevPtr=currPtr; currPtr=currPtr->nextPtr; } if(prevPtr==NULL){ newPtr->nextPtr=*sPtr; *sPtr=newPtr; } else{ prevPtr->nextPtr=newPtr; newPtr->nextPtr=currPtr; } } else{ printf("%d not inserted. No memory available.\n",val); } } void printL(List1Ptr currPtr) { if(currPtr==NULL){ printf("List is empty!\n"); } else{ printf("The list is: \n" ); while(currPtr!=NULL){ printf("%d--> ", currPtr->i); currPtr=currPtr->nextPtr; } printf("NULL\n\n"); } } List1Ptr merge(List1Ptr *s1Ptr, List1Ptr *s2Ptr) { List1Ptr firstPtr; List1Ptr secPtr; List1Ptr newPtr; List1Ptr currPtr; List1Ptr prevPtr; newPtr=malloc(sizeof(List)); firstPtr=*s1Ptr; secPtr=*s2Ptr; currPtr=newPtr; if(firstPtr!=NULL&&secPtr!=NULL){ if(firstPtr->i > secPtr->i){ currPtr->i=secPtr->i; currPtr=currPtr->nextPtr; currPtr->i=firstPtr->i; secPtr=secPtr->nextPtr; firstPtr=firstPtr->nextPtr; currPtr=currPtr->nextPtr; } else{ currPtr->i=firstPtr->i; currPtr=currPtr->nextPtr; currPtr->i=secPtr->i; secPtr=secPtr->nextPtr; firstPtr=firstPtr->nextPtr; currPtr=currPtr->nextPtr; } if(firstPtr==NULL&&secPtr!=NULL){ currPtr->i=secPtr->i; currPtr=currPtr->nextPtr; secPtr=secPtr->nextPtr; } if(secPtr==NULL&&firstPtr!=NULL){ currPtr->i=firstPtr->i; currPtr=currPtr->nextPtr; firstPtr=firstPtr->nextPtr; } } return newPtr; }

Rispondi quotando