Cの単純なリンクリストの実装では、insert()という名前の関数行を見つけることができませんでした。 charをアルファベット順にリンクリストに追加します。 この行は、リストが空の場合に新しいノードを作成することに関するものです。リストにはノードが1つしかないので、私はコメントしたような行になるはずですが、間違っていますか?リンク先の先頭に新しいノードを挿入
/****************************************************/
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
/*******************************************************/
main()のtypedef命令は次のとおりです。
typedef struct listNode ListNode;
typedef ListNode* ListNodePtr;
そして、このようにmain()関数insert()が呼び出されます。
insert(&startPtr, item);
main()でのstartPointerの初期化。
ListNodePtr startPtr = NULL;
ああ、あなたは私の答えを掲載した通りに編集しました。良いキャッチ – DTing