C의 간단한 Linked List 구현에서 insert()라는 함수 줄을 알 수 없습니다. char를 취하고 링크 된 목록에 알파벳순으로 추가합니다. 이 줄은 목록이 비어있을 때 새 노드를 만드는 것입니다. 그리고 목록에 하나의 노드가 있기 때문에, 내가 말한 것처럼 줄이 틀림없이 틀렸을까요?Linked-List 시작 부분에 새 노드 삽입
/****************************************************/
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;
그리고 insert() 함수는 main()에서 이와 같이 호출됩니다.
insert(&startPtr, item);
main()에서 startPointer를 초기화합니다.
ListNodePtr startPtr = NULL;
아아, 내가 대답을 게시 한대로 바로 편집했습니다. 좋은 캐치 – DTing