초보 와 함께 데이터 구 조 를 배 우 는 간단 한 정적 링크 실현

일반적인 상황 에서 우 리 는 배열 을 사용 해 야 한다. 그렇지 않 으 면 링크 로 선형 데이터 구 조 를 실현 하고 정적 링크 를 사용 하지 않 는 다.배열 을 바탕 으로 하 는 링크 의 성질 을 가 진 데이터 구조간단하게 애플 릿 을 썼 습 니 다.
 
#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

#define MAXNUM 1000

 

typedef struct

{

       int data;

       int cur;

}List[MAXNUM], Link;

 

void list_create(Link *list);

void list_insert(Link *list, int value);

void list_delete(Link *list, int value);

void list_print(Link *list);

 

int main(void)

{

       List list;

       int i;

       

       list_create(list);

       

       for(i = 1; i < 9; i++)      

              list_insert(list, i);

       

       list_print(list);

       printf("
"); list_delete(list, 2); list_print(list); printf("
"); return 0; } /* */ void list_create(Link *list) { list[0].cur = 0; list[0].data = 1; } /* */ void list_insert(Link *list, int value) { int i; int len; i = 0; while(list[i].cur != 0) i = list[i].cur; len = list[0].data++; list[i].cur = len; list[len].data = value; list[len].cur = 0; } /* */ void list_delete(Link *list, int value) { int i; int len; if(list[0].data == 1) { printf("Empty list
"); return; } i = 0; while(list[i].cur != 0) { if(list[list[i].cur].data == value) { list[i].cur = list[list[i].cur].cur; } i = list[i].cur; } } /* , */ void list_print(Link *list) { int i; if(list[0].data == 1) { printf("Empty list
"); return; } i = 0; while(list[i].cur != 0) { printf("%d %d
", list[i].data, list[i].cur); i = list[i].cur; } printf("%d %d
", list[i].data, list[i].cur); /* for(i = 0; i < list[0].data; i++) printf("%d %d
", list[i].data, list[i].cur); */ }

 
       정적 링크 란 하나의 커서 가 더 생 긴 것 입 니 다. 링크 의 지침 과 비슷 합 니 다. 마치 모든 데 이 터 를 연결 하 는 것 과 같 습 니 다.
예 를 들 면:
       I   data    cur

       0     5      1

       1     1      3            

       2    2      4

       3    5      2

       4   6     0


 
위 에 정적 링크 가 있 습 니 다.
먼저 시계 머리 i = 0 부터 시작 합 시다.0-->1 ,  1-->3,  3-->2,  2-->4,  4-->0.이렇게 하면 체인 이 있 는 링크 입 니 다. 데 이 터 는 거기에 저장 되 어 있 습 니 다. 다만 커서 의 방향 이 다 를 뿐 입 니 다.예 를 들 어 단일 체인 시트 에서 데이터 도 동적 신청 이 온 후에 메모리 공간 에 고정 시 킨 다음 에 지침 이 모든 것 을 연결 하 는 것 과 같다.그러나 이 정적 체인 시 계 는 그 가 배열 로 사용 할 수 있어 서 그의 강 함 을 알 수 있다.

좋은 웹페이지 즐겨찾기