데이터 구조 학습 - 링크 (단일 링크) 의 생 성과 옮 겨 다 니 기

5140 단어 데이터 구조
본문 은 나의 첫 번 째 블 로그 다.왜 블 로 그 를 쓸 생각 을 했 습 니까?새로운 지식 을 배 울 때마다 금방 잊 어 버 릴 까 봐 걱정 했 기 때문이다.새로운 지식 을 배 운 후에 자신의 학습 과정 과 학습 내용 을 거 슬러 올 라 갈 때 결과 가 없 는 추억 에 빠진다.기억력 이 나 쁜 필치 보다 못 하고 배 운 중요 한 지식 을 블 로그 의 형식 으로 저장 하면 간단 하면 서도 나중에 거 슬러 올 라 가기 쉽다.
나 는 그 상세 한 설명 과 함께 나의 모든 블 로 그 를 쓸 것 이다!이런 형식 을 통 해 자신 에 게 도 도움 이 되 고 다른 사람 에 게 도 도움 이 되 기 를 바 랍 니 다.
데이터 구 조 를 공부 할 때 링크 는 중요 한 지식 점 으로 링크 를 잘 배우 면 후속 적 인 학습 에 좋 은 기반 을 다 질 것 이다.
배열 이 비교적 간단 해서 모두 가 일반적으로 파악 할 수 있다.링크 와 배열 의 공통점 은 둘 다 선형 데이터 구조 이다.링크 가 배열 과 다른 점 은 배열 의 데 이 터 는 메모리 에 연속 으로 저장 되 고 링크 의 노드 는 분 산 된 저장 이다.
링크 의 모든 노드 는 두 부분 을 포함한다. 데이터 도 메 인, 포인터 도 메 인 이다.데이터 도 메 인 은 이 노드 에 저 장 된 데 이 터 를 저장 하고 포인터 도 메 인 은 다음 노드 의 주 소 를 저장 합 니 다.이렇게 해서 두 개의 분 산 된 노드 사 이 는 앞의 노드 의 지침 역 을 통 해 연 결 된 것 이다.
다음은 링크 생 성 함수 및 스 트 리밍 함수 입 니 다.
# include 
# include 
# include 

typedef struct node  //       ,data     ,pNext     
{
    int data;
    struct node * pNext;
}NODE, * PNODE; // typedef  ,NODE  struct node,PNODE  struct node *

PNODE create_list(void); //      
void traverse_list(PNODE pHead); //      

int main(void)
{
    PNODE pHead = NULL; 

    pHead = create_list();
    traverse_list(pHead); 

    return 0;
}

PNODE create_list(void)
{
    int len; //    
    int i;
    int val;
    PNODE pHead = (PNODE)malloc(sizeof(NODE)); //     
    if (NULL == pHead) //           
    {
        printf("      ,    !");
        exit(-1);
    }
    PNODE pTail = pHead; //    pTail,  pHead       
    pTail->pNext = NULL; // pTail          NULL,   pHead          NULL

    printf("        : len =");
    scanf("%d", &len);

    for (i=0; iprintf("      %d     :", i+1);
        scanf("%d", &val);

        PNODE pNew = (PNODE)malloc(sizeof(NODE)); //        
        if (NULL == pNew)
        {
            printf("      ,    !");
            exit(-1);
        }
        pNew->data = val; //                 
        pTail->pNext = pNew; //           pTail         ,            pHead           。  ,                    
        pNew->pNext = NULL; //        NULL
        pTail = pNew; //               pTail,                           。       pTail=pHew1         pTail=pHead,    ,               
    }
    return pHead;
}

void traverse_list(PNODE pHead)
{
    PNODE p = pHead->pNext; //p            

    while (NULL != p)
    {
        printf("%d ", p->data); //       :                         
        p = p->pNext; // p  p              ,       printf                 
    }

    return;
}

체인 테이블 의 생 성 함수 에서 pTail 의 역할 은 중개 역할 을 하 는 것 과 같다. 새로운 노드 를 생 성하 고 이전 노드 와 연결 할 때 이전 노드 를 직접 조작 하지 않 고 pTail 을 통 해 조작 을 해서 pTail 의 역할 을 알 아야 체인 테이블 의 생 성 을 이해 할 수 있다.
이상 은 제 이해 입 니 다. 잘못된 부분 이 있 으 면 지적 을 환영 합 니 다. 만약 에 단일 체인 표를 만 드 는 것 에 대한 다른 이해 가 있다 면 서로 교류 하 는 것 을 환영 합 니 다.

좋은 웹페이지 즐겨찾기