문제
누구든지 이것을 설명해 주시겠습니까?
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()
코드에 정의 된 함수는 다음을 수행합니다.
- 임시 변수를 정의합니다
x
. - 새 노드에 대한 공간을 할당합니다.
- 정수를 입력합니다 (
%d
코드scanf
) 그리고 그것을 저장합니다x
. - 저장된 값을 저장합니다
x
새로 할당 된 노드의 데이터 필드에서. - 변수가 가리키는 목록의 오래된 "헤드"를 저장
list
'새로 할당 된 노드의 링크로. - 새 노드를 변수에 저장된 목록의 새 헤드로 설정합니다.
list
'.
링크 된 목록의 매우 기본적인 구현입니다 (http://en.wikipedia.org/wiki/linked_list정수의).
다른 팁
첫 번째 줄 : 목록의 단일 추가 노드에 대한 메모리를 할당하십시오.
두 번째 줄 : 현재 목록을이 요소의 연속으로 첨부하십시오.
세 번째 줄 : 현재 요소를 목록의 시작으로 만듭니다.
메인으로 선언되었으므로 온도와 목록은 AddBeg에서 볼 수 없습니다. 그들은 Addbeg에 전달되거나 Main (Global, Yuck) 외부에서 선언해야합니다.
Malloc은 새 노드를 위해 공간을 할당합니다.
temp->link = list
그리고
list = temp
그 새 노드를 목록의 헤드로 만듭니다.
제휴하지 않습니다 StackOverflow