순서 표 의 응용 (링크 중복 요소 삭제)
2547 단어 체인 테이블
Time Limit: 1000MS Memory limit: 65536K
제목 설명
길이 가 n (n < 1000) 인 순서 표 에 같은 값 의 '여분의' 데이터 요소 (형식 은 정형) 가 존재 할 수 있 습 니 다. 프로그램 을 작성 하여 '여분의' 데이터 요 소 를 순서 표 에서 삭제 하고 이 표를 '비 순수한 표' (같은 값 의 요소 가 표 에 여러 개 있 을 수 있 음) 에서 '순수한 표' 로 만 듭 니 다.
입력
첫 번 째 줄 입력 표 의 길이 n;
두 번 째 줄 은 순서 표 에 저 장 된 n 개의 요소 값 을 순서대로 입력 합 니 다.
출력
첫 번 째 줄 출력 이 불필요 한 요 소 를 삭제 한 후 순서 표 의 요소 갯 수;
두 번 째 줄 은 삭 제 된 순서 표 요 소 를 순서대로 출력 합 니 다.
예제 입력
12
5 2 5 3 3 4 2 5 7 5 4 3
예제 출력
5
5 2 3 4 7
#include
#include
typedef struct node
{
int data;
struct node *next;
} node;
int main()
{
int n,a;
scanf("%d",&n);
node *p,*q,*head,*tail;
head=(node*)malloc(sizeof(node));
head->next=NULL;
tail=head;
a=n;
while (a - -) / / 순서 링크 만 들 기
{
p=(node*)malloc(sizeof(node));
scanf("%d",&p->data);
tail->next=p;
tail=p;
}
p = (node *) malloc (sizeof (node); / 여 기 는 링크 마지막 에 빈 노드 를 만 들 고 후속 삭제 작업 을 편리 하 게 합 니 다.
p->next=NULL;
tail->next=p;
tail=head->next;
while (tail - > next! = NULL) / / 첫 번 째 원소 부터 검출
{
a=tail->data;
p=tail;
q=p->next;
while (q - > next! = NULL) / / 각 요소 가 현재 요소 와 같 는 지,
{
if (q - > data = = a) / / 같 으 면 삭제
{
p->next=q->next;
free(q);
q=p->next;
n--;
}
else / / 다 르 면 다음 요소 로 넘 어가 서 태그 변 수 를 선후 로 뛰 게 합 니 다.
{
p=q;
q=q->next;
}
}
tail = tail - > next; / 검 측 할 변 수 를 변경 합 니 다.
}
printf("%d",n);
for (tail = head - > next; tail - > next - > next! = NULL; tail = tail - > next) / / 앤 이 인쇄 를 요구 합 니 다.
printf("%d ",tail->data);
printf("%d",tail->data);
return 0;
}
코드 를 함께 놓 는 습관 이 있 습 니 다. 한 번 사용 하 는 코드 는 호출 함수 로 매우 번 거 롭 고 파 라 메 터 를 전달 할 때 오류 가 발생 하기 쉽 습 니 다 (개인 습관 과 수준 이 결정 되 고 본인 의 수준 이 확실히 높 지 않 습 니 다). 그래서 같이 쓰 는 습관 이 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
하나의 단일 체인 테이블의 순환과 귀속 실현을 반전시키다텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.