어떻게 링크 를 만 듭 니까?

1083 단어
링크 는 흔히 볼 수 있 는 중요 한 데이터 구조 로 동적 으로 메모리 저장 분 배 를 하 는 구조 이다.
배열 로 데 이 터 를 저장 할 때 는 고정된 길이 (즉, 요소 갯 수) 를 미리 정의 해 야 하지만 몇 개의 요소 가 있 는 지 미리 확인 하기 어 려 울 때 는 배열 을 충분히 정의 하여 성공 을 보장 해 야 합 니 다.
의심 할 여지없이 이것 은 메모리 낭 비 를 초래 할 수 있다. 그러나 체인 테이블 은 이러한 단점 이 없다. 이것 은 수요 에 따라 동적 으로 메모리 단원 을 개척 할 수 있다.
링크 의 각 요 소 는 메모리 에 연속 으로 저장 할 수 있 습 니까? 그러나 특정한 요 소 를 찾 으 려 면 주 소 를 알 아야 합 니 다. 이 는 링크 에 헤드 포인터 (head) 가 있어 야 합 니 다.
#include <stdlib.h>
#include <stdio.h>
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
long num;
float score;
struct student *next;
};
 
int n;
struct student *creat(void)
{
  struct student *head;
  struct student *p1,*p2;
  n=0;
  p1=p2=(struct student *)malloc(LEN);
  scanf(“%ld,%f”,&p1->num,&p1->score);
  head=NULL;
  while(p1->num != 0)
  {
   n=n+1;
   if(n == 1)
    head = p1;
   else
    p2->next = p1;
   p2 = p1;
   p1 = (struct student *)malloc(LEN);
      scanf(“%ld,%f”,&p1->num,&p1->score);
  }
  p2->next = NULL;
  return(head);
}
 
void main()
{
 creat();
}

좋은 웹페이지 즐겨찾기