/ * 설명 : 리드 노드를 취할 단일 목록을 만들은 삭제 중복은 단일 연결리스트에서 같은 값을 노드 및 목록 삭제 목록의 최대 노드를 통과. 입력 : 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 ; }