C 언어는 비순환 쌍사슬표 노드의 삭제를 실현한다(선두 결점 끝 결점)

나는 이전의 블로그인 에서 두미 노드가 없는 쌍체인 테이블에서 노드를 삭제하는 것을 상세하게 설명했는데 처리 과정은 여전히 약간 번거롭다.우리가 두미 노드를 이용하여 쌍사슬표를 처리하는 것을 배운 후부터 삭제 과정은 매우 편리하다.코드 업로드https://github.com/chenyufeng1991/DeleteNodeDoubleLinkedList_HeadList .
핵심 코드는 다음과 같습니다.
//  pos     
int DeletePosList(Node *pHead,Node *pTail,int pos){

    int i = 1;
    Node *pMove;
    pMove = pHead->next;
    while (pMove != pTail) {
        if (i == pos) {
            pMove->prior->next = pMove->next;
            pMove->next->prior = pMove->prior;
            free(pMove);
            pMove = NULL;
            printf("%s    ,  pos=%d       
",__FUNCTION__,pos); return 1; } i++; pMove = pMove->next; } printf("%s , pos=%d
",__FUNCTION__,pos); return 0; } // x , int DeleteValueList(Node *pHead,Node *pTail,int x){ Node *pMove; pMove = pHead->next; while (pMove != pTail) { if (pMove->element == x) { pMove->prior->next = pMove->next; pMove->next->prior = pMove->prior; free(pMove); pMove = NULL; printf("%s , x=%d
",__FUNCTION__,x); return 1; } pMove = pMove->next; } printf("%s , x
",__FUNCTION__); return 0; }

좋은 웹페이지 즐겨찾기