//HERE WE GO!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct listNode{
int value;
struct listNode *nextPtr;
};
typedef struct listNode ListNode;
typedef ListNode *ListNodePtr;
void insert(ListNodePtr *sPtr, int value);
void copy(ListNodePtr *sPtr, int value);
void printList(ListNodePtr sPtr);
int main()
{
int value;
ListNodePtr startPtr=0;
ListNodePtr secondPtr=0;
int tempValue;
srand(time(0));
for(int i=0;i<10;i++){
value=rand()%15;
insert(&startPtr,value);
}
while(startPtr!=0){
tempValue=startPtr->value;
copy(&secondPtr,tempValue);
startPtr=startPtr->nextPtr;
}
printList(secondPtr);
}
void copy(ListNodePtr *sPtr, int value)
{
ListNodePtr newPtr;
newPtr=malloc(sizeof(ListNode));
if(newPtr!=0){
newPtr->value=value;
newPtr->nextPtr=*sPtr;
*sPtr=newPtr;
}else{
printf("%d not inserted. No memory", value);
}
}
void insert(ListNodePtr *sPtr,int value)
{
ListNodePtr newPtr,currentPtr,previousPtr;
newPtr=malloc(sizeof(ListNode));
if(newPtr!=0){
newPtr->value=value;
newPtr->nextPtr=0;
currentPtr=*sPtr;
previousPtr=0;
while(currentPtr!=0&&value>currentPtr->value){
previousPtr=currentPtr;
currentPtr=currentPtr->nextPtr;
}
if(previousPtr==0){
newPtr->nextPtr=*sPtr;
*sPtr=newPtr;
}else{
previousPtr->nextPtr=newPtr;
newPtr->nextPtr=currentPtr;
}
}else{
printf("%d not inserted. No memory available");
}
}
void printList(ListNodePtr sPtr)
{
while(sPtr!=0){
printf("%d -->",sPtr->value);
sPtr=sPtr->nextPtr;
}
}