데이터 구조 상의 테스트 2 - 2: 단일 체인 시트 조작 B SDUT - 1139

1946 단어
데이터 구조 상의 테스트 2 - 2: 싱글 체인 시트 조작 B
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic Discuss
Problem Description
데이터 입력 의 반대 순서 (역 위 순서) 에 따라 단일 체인 표를 만 들 고 단일 체인 표 에서 중복 되 는 요 소 를 삭제 합 니 다 (값 이 같은 요 소 는 마지막 입력 의 하나 만 유지 합 니 다).
Input
첫 번 째 줄 에 원소 개수 n 입력 하기;두 번 째 줄 에 n 개의 정 수 를 입력 하 세 요.
Output
첫 번 째 줄 출력 초기 링크 요소 갯 수;두 번 째 줄 의 출력 은 역순 에 따라 만들어 진 초기 링크 입 니 다.세 번 째 줄 출력 에서 중복 요 소 를 삭제 한 후의 단일 체인 표 요소 갯 수;네 번 째 줄 출력 은 중복 요 소 를 삭제 한 단일 체인 시트 입 니 다.
Sample Input
10
21 30 14 55 32 63 11 30 55 30

Sample Output
10
30 55 30 11 63 32 55 14 30 21
7
30 55 11 63 32 14 21

Hint
Source
#include #include #include
struct node {     struct node *next;     int data; }*head, *tail, *p, *q; struct node *creat(int n) {     int i;     struct node *head, *p;     head=(struct node*)malloc(sizeof(struct node));head -> next = NULL;     for(i = 0; i < n; i++)     {         p = (struct node*)malloc(sizeof(struct node));         scanf("%d", &p->data);         p -> next = head -> next;head -> next = p;     }     return head; }; void show (struct node *head) {     struct node *t;     t = head -> next;     while(t)     {         if(t -> next != NULL)printf("%d ", t -> data);         else printf("%d", t -> data);         t = t -> next;     } } int main() {     int n;     scanf("%d", &n);head = creat(n);     printf("%d", n);show(head);     p = head -> next;     while(p != NULL)     {         tail = p;q = p -> next;         while(q != NULL)         {             if(q -> data == p -> data)             {                 tail -> next = q -> next;q = tail -> next;n--;             }             tail = tail -> next;q = q->next;         }         p = p-> next;     }     printf("%d", n);show(head);     return 0; }

좋은 웹페이지 즐겨찾기