C 언어 진급 - 넷 째 주: 링크 역순 으로 출력 (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;
    }
   이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
에세이 - 두 개의 순차적 단일 체인 테이블 결합(반복/비반복)제목: 두 개의 질서정연한 단일 체인 테이블 병합 반복: 비반복:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.