문제

누구든지 이것을 설명해 주시겠습니까?

struct node 
{ 
    int data; 
    struct node * link; 
} 
main() 
{
    struct node *p, *list, *temp; 
    list = p = temp = NULL; 
    ......................... 
    ......................... 
} 

addbeg() 
{ 
    int x;
    temp=malloc(sizeof(struct node));
    scanf("%d", &x); 
    temp->data=x;
    temp->link = list;
    list=temp;
}

이것은 C 언어를 통해 링크 된 목록에 데이터를 입력하기위한 코드입니다. 코드는 완전하지 않지만 목적을 위해 충분하다고 생각합니다. 코딩을 기본적으로 다음 줄에 대해 설명하십시오.

 temp=malloc(sizeof(struct node));

그리고

 temp->link = list;
 list=temp;.
도움이 되었습니까?

해결책

malloc() 이 경우 새 노드의 경우 메모리를 할당하는 데 사용됩니다.

그만큼 addbeg() 코드에 정의 된 함수는 다음을 수행합니다.

  1. 임시 변수를 정의합니다 x.
  2. 새 노드에 대한 공간을 할당합니다.
  3. 정수를 입력합니다 (%d 코드 scanf) 그리고 그것을 저장합니다 x.
  4. 저장된 값을 저장합니다 x 새로 할당 된 노드의 데이터 필드에서.
  5. 변수가 가리키는 목록의 오래된 "헤드"를 저장list'새로 할당 된 노드의 링크로.
  6. 새 노드를 변수에 저장된 목록의 새 헤드로 설정합니다.list'.

링크 된 목록의 매우 기본적인 구현입니다 (http://en.wikipedia.org/wiki/linked_list정수의).

다른 팁

첫 번째 줄 : 목록의 단일 추가 노드에 대한 메모리를 할당하십시오.

두 번째 줄 : 현재 목록을이 요소의 연속으로 첨부하십시오.

세 번째 줄 : 현재 요소를 목록의 시작으로 만듭니다.

메인으로 선언되었으므로 온도와 목록은 AddBeg에서 볼 수 없습니다. 그들은 Addbeg에 전달되거나 Main (Global, Yuck) 외부에서 선언해야합니다.

Malloc은 새 노드를 위해 공간을 할당합니다.

temp->link = list

그리고

list = temp

그 새 노드를 목록의 헤드로 만듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top