주어진 배열, (선두 노드) 의 단일 체인 시트 (헤드 삽입 법, 꼬리 삽입 법) 를 만 듭 니 다.

4374 단어 알고리즘
보통 두 가지 자주 사용 하 는 방법 으로 단일 체인 표를 만 듭 니 다. 머리 삽입 법 과 꼬리 삽입 법 입 니 다.(1) 헤드 삽입 법: 매번 새로 신청 한 노드 를 헤드 노드 뒤에 꽂 습 니 다.쉽게 말 하면 새로 추 가 된 요 소 를 표 두 뒤의 첫 번 째 위치 에 두 는 것 이다. 먼저, 새로운 노드 의 next 가 머리 노드 를 가리 키 게 한 다음 에.그리고 시계 머리의 next 가 새 노드 를 가리 키 도록 합 니 다.(2) 꼬리 삽입 법: 매번 새로 신청 한 노드 를 터미널 노드 뒤에 꽂 습 니 다.
#include 
#include 

typedef struct node
{
    int data;
    struct node *next;
} NODE;


//         (    )
NODE *createEnd(int arr[], int len)
{
    NODE *head = (NODE *)malloc(sizeof(NODE)); //      
    head->next = NULL;
    NODE *end = head;  //       

    for (int i = 0; i < len; i++) {

        NODE *p = (NODE *)malloc(sizeof(NODE)); //              
        p->data = arr[i];
        end->next = p;  //    p         
        end = p;
    }

    end->next = NULL;  //return head;
}

//         (    )
NODE *createHead(int arr[],int len)
{
    NODE *head = (NODE *)malloc(sizeof(NODE)); //         
    head->next = NULL;

    for (int i = len-1; i >= 0; i--) {
        NODE *p = (NODE *)malloc(sizeof(NODE));
        p->data = arr[i];

       //         ,p->next  head->next,   NULL,       ;
        p->next = head->next; //      next       
        head->next = p; //     next     
    }

    return head;
}


//      
void print(NODE *head)
{
    if (head == NULL) return;

    NODE *p = head->next;
    while (p != NULL) {
        printf("%d
"
, p->data); p = p->next; } } int main(void) { int arr[] = {1,2,3,4,5,6,7}; int len = sizeof(arr)/sizeof(int); NODE *head1 = createEnd(arr, len); NODE *head2 = createHead(arr, len); print(head1); print(head2); return 0; }

좋은 웹페이지 즐겨찾기