3. 데이터 구조 싱글 체인 시트 의 링크 인덱스

6031 단어 데이터 구조
위의 두 편의 박문 은 단일 체인 표 의 전체 표 의 생 성 을 소 개 했 습 니 다. 다음은 다음 과 같은 단일 체인 표 의 색인 을 소개 합 니 다. 1. 먼저 꼬리 삽입 법 을 통 해 하나의 단일 체인 표를 만 들 고 다음 과 같은 함수 로 합 니 다.
listnode CreatlistTail(listnode* L, int a[], int len) {
    listnode* r = L; 
    for (int i = 0; i < len; i++) {
        listnode* trans = new listnode;  //            
        trans->value = 0;
        trans->next = NULL;    //           listnode    
        trans->value = a[i]; //          
        r->next = trans; //         ,      ,         
        r = trans; //            r ,     
    }
    return *L;
}

2. 다음은 단일 링크 의 색인 함수 입 니 다.
void GetListElem(listnode* L,int index) {  //      
    listnode* transit = L;  //        ,     L   
    int i = 0,answer = 0; //     
    if (L == NULL) {  //        
        cout << "     !";
        return;
    }
    transit = transit->next;  //                
    while (transit != NULL && i <= index) { //                  ,             ,        
        answer = transit->value; //          
        transit = transit->next; //                                      ,         
        i++; //        
    }
    if (transit == NULL && i-1 < index) { //            while  ,  ,      ,    answer,answer        
        cout << "    !" << endl;
    }
    else {
        cout << "     : " << answer << endl;
    }
}

3. main 함수 에서 순환 입력 방법 을 사용 하여 q 를 입력 하고 종료 할 때 까지 재 미 있 을 뿐 이렇게 쓴 것 입 니 다. 하지만 완벽 하지 않 은 부분 이 있 습 니 다. 하지만 이것 도 제 가 최선 을 다 해 완벽 한 버 전 입 니 다.
int main() {
    int test[5] = { 1,2,3,4,5 };
    listnode L_test;
    char input = 0;
    int num;
    L_test = CreatlistTail(&L_test,test,5);
    cout << "please enter your index('q' to exit,please enter 0-9):";
    while (cin >> input && input != 'q') {  //       quit
        if (input >= '0' && input <= '9') {  //        
            num = input - '0';
            GetListElem(&L_test, num);
        }
        else {
            cout << "please enter correctly!" << endl; 
            cin.ignore(1024,'
'
); // continue; } } cout << "you have quited system" << endl; system("pause"); return 0; }

유일 하 게 완벽 하지 못 한 것 은 두 자릿수 를 입력 할 때 출력 할 수 없다 는 것 이다. "please enter correctly!"입력 의 시작 을 숫자 로 판단 하 는 불법 입력 방법 을 찾 지 못 했 습 니 다. 아마도 cin. get () 은 가능 할 것 입 니 다. 하지만 쓰기 방법 은 복잡 합 니 다. anyway.

좋은 웹페이지 즐겨찾기