В простой реализации Linked List на C я не мог понять строку функции с именем insert ().
Он берет символ и добавляется в связанный список в алфавитном порядке.
Строка о создании нового узла, когда список пуст. И поскольку в списке будет только один узел, строка должна быть такой, как я прокомментировал, я не прав?
/****************************************************/
void insert( ListNodePtr *sPtr, char value ){
ListNodePtr newPtr;
ListNodePtr previousPtr;
ListNodePtr currentPtr;
newPtr = malloc( sizeof( ListNode) );
if( newPtr != NULL ){ //is space available
newPtr->data = value; //place value in node
newPtr->nextPtr = NULL; //node does not link to another node
previousPtr = NULL;
currentPtr = *sPtr; //indirection to startPtr
while( currentPtr != NULL && value > currentPtr->data ){
previousPtr = currentPtr; //walk to ...
currentPtr = currentPtr->nextPtr; //... next node
}
//insert new node at the beginning of the list
if( previousPtr == NULL ){
newPtr->nextPtr = *sPtr; /////////////////////////////////////////////// newPtr->nextPtr = NULL ???
*sPtr = newPtr;
}
else{ //insert new node between previousPtr and currentPtr
previousPtr->nextPtr = newPtr;
newPtr->nextPtr = currentPtr;
}
}
else
printf( "%c not inserted. No memory available.\n", value);
}//end-of insert
/*******************************************************/
инструкции typedef в main ():
typedef struct listNode ListNode;
typedef ListNode* ListNodePtr;
и функция insert () вызывается в main () следующим образом;
insert( &startPtr, item);
инициализация startPointer в main ();
ListNodePtr startPtr = NULL;