C 언어 진급 - 넷 째 주: 링크 역순 으로 출력 (10 점)

역순 출력 (10 분)
 
제목 내용:
프로그램 은 일련의 정 수 를 읽 을 것 입 니 다. 정 정수 의 수량 을 미리 모 르 고 - 1 을 읽 으 면 입력 이 끝 났 음 을 표시 합 니 다.그 다음 에 입력 과 반대 되 는 순서에 따라 읽 은 숫자 를 출력 하고 마지막 표지 가 끝 난 - 1 을 포함 하지 않 습 니 다.
 
입력 형식:
일련의 정수, 입력 - 1 은 끝 을 나타 내 고 - 1 은 입력 한 데이터 의 일부분 이 아니다.
 
출력 형식:
입력 과 반대 되 는 순서에 따라 모든 정 수 를 출력 하고 모든 정수 뒤에 빈 칸 과 뒤의 정수 로 구분 하 며 마지막 정수 뒤에 도 빈 칸 이 있다.
 
입력 예시:
1 2 3 4 -1
 
출력 예시:
4 3 2 1 
시간 제한: 500 ms 메모리 제한: 32000 kb
    //        ,20180618 
    #include   
    #include   
    
	//      ,                  
	//            
    typedef struct _node {  
        int value;  
        struct _node *before;  
    } Node;  
      
    int main()  
    {  
        Node * head = NULL;  //         
        int number;  
        do {  
            scanf("%d", &number);  
            if ( number != -1)  
            {  
                Node *p = (Node*)malloc(sizeof(Node));  
                p->value = number;  
                p->before = head;  //p->before    ,    p     ( p        ) 
                head = p;  //        p   
            }  
        } while ( number != -1);  
        Node *p;  //    p     
        for ( p = head; p; p=p->before) {  
            printf("%d ", p->value);  
        }  
          
        return 0;  
    }  

데이터 구 조 를 배 우 는 것 이 필요 하 다. 최근 에 야 링크 를 사용 하고 이해 하 게 되 었 다.다음은 전방 향 포인터 와 후계 지침 을 가 진 체인 테이블 로 유사 한 기능 을 수행 할 수 있 으 나 더욱 유연 하고 정방 향 또는 역방향 데이터 출력 을 마음대로 실현 할 수 있 습 니 다.
    //        ,20180618
    #include 
    #include 
    #include 
    using namespace std;

    typedef struct _node {
        struct _node *before;
        int value;
        struct _node *next;
    } Node;

    int main()
    {
        Node * head = NULL;  //        
        Node * tail = head;
        int number;
        do {
            scanf("%d", &number);
            if ( number != -1)
            {
                Node *p = (Node*)malloc(sizeof(Node));
                p->before=NULL;
                p->value = number;
                p->next = NULL;  //p->next    ,    p     ( p        )
                if(tail){
                     p->before = tail;
                     tail->next = p;  //        p  
                     tail=p;
                }
                else{
                    tail=p;
                    head=tail;
                }
            }
        } while ( number != -1);
        Node *p;  //    p    
        for ( p = tail; p; p=p->before) {
            printf("%d ", p->value);
        }
        return 0;
    }

좋은 웹페이지 즐겨찾기