리드 노드를 취할 하나의 목록을 작성, 삭제 중복은 단일 연결리스트에서 같은 값을 노드 및 목록 삭제 목록의 최대 노드를 통과.

 

/ *
설명 : 리드 노드를 취할 단일 목록을 만들은 삭제 중복은 단일 연결리스트에서 같은 값을 노드 및 목록 삭제 목록의 최대 노드를 통과.
입력 : N 개의 입력 데이터 요소의 수 및 키보드에 대응하는 n 개의 요소.
출력 : 노드의 제거를 초과하는 단일 체인 순서.
샘플 입력 : 6313445--7
출력 샘플 : 3145
* / 
#INCLUDE <STDIO.H> 
#INCLUDE < 문자열 .H> 
사용법 #include <stdlib.h> 
#INCLUDE <malloc.h> 
의 typedef 구조체 노드 {
     INT의 데이터;
    구조체 노드 * 다음;
LinkList};
공극 생성 (L * LinkList을 int로 A [] 의 INT {N)
     지능 I를;
    LinkList * S * R;
    L = (LinkList *)의 malloc ( sizeof 연산자 (LinkList을));
    R = L;
    대해 (ⅰ = 0 ; 나는 <N; I ++는 ) {
        S = (LinkList *)의 malloc ( sizeof 연산자 (LinkList));
        (S) -> 데이터 = A [I];
        R -> 다음 = S;
        R = S;
    }
    R -> 다음 = NULL;
}
/ * 동일한 중복 삭제 노드의 값 중 하나에서 링크리스트 * / 
무효 deleteLinkList (LinkList * L) {
    LinkList * 미리 = L, * p = L-> 다음 * s의;
    INT (K) = 0 ;
    동안 (P! = NULL) {
        S = P;
        미리 = 쪽;
        동안 (사전> 다음! = NULL) {
             경우 (사전>하는 next-> 데이터 == S-> 데이터) {
                사전 > 다음 = 사전>하는 next-> - ; 다음을
            }
            사전 = 사전> 다음을;
        }
        P = P-> 다음;
    }
}
/ * 제거 최대 노드 목록 * / 
BOOL deletemax (LinkList * L) {
    LinkList * 미리 = L, * p = L-> 다음 maxpre * = * 사전있는 no = P ;
    반면 (p! = NULL) {
         경우 (P-> 데이터> maxp-> 데이터) {
            maxpre = 사전;
            있는 no = P;
        } = P;
        P = P-> 다음;
    }
    경우 (maxpre == NULL ||있는 no == NULL) { 반환  거짓 ;}
    maxpre -> 다음 = maxp-> 다음;
    무료 (있는 no);
    반환  사실 ;
}
/ * 이송 출력 목록 * / 
무효 인쇄 (LinkList * L) {
    LinkList * p = L-> 다음;
    동안 (P! = NULL) {
        의 printf ( " %의 D " , P-> 데이터);
        P = P-> 다음;
    }
    의 printf ( " \ n " );
}

int 형 ) (주
{
    INT의 N, I;
    LinkList * L;
    scanf와 ( " %의 D ' , N);
    int로 A [N]을;
    대해 (ⅰ = 0 ; 나는 <N; I ++는 ) {
        scanf와 ( " 가 % d " , & A [I]);
    }
    (L, A, n)을 생성;
    deleteLinkList (L);
    경우 (deleteMax (L)) {
        (L) 인쇄;
    }
    반환  0 ;
}

 

추천

출처www.cnblogs.com/zhaohuan1996/p/11834130.html