링크 에서 Node 와 LinkList (Node *) 의 차이

8825 단어 데이터 구조
링크 에서 Node 와 LinkList (Node *) 의 차이
우선 구조 체 를 살 펴 보 자.
typedef int ElemType;
typedef struct Node
{
	ElemType data;
	struct Node *next;
}Node, *LinkList;

이 구조 체 에 서 는 노드 (struct Node 와 등가), 링크 리스트 (Node 와 등가) 를 사용 했다.구조 체 내부 에 struct Node next 도 정의 되 어 있 습 니 다. 이러한 정 의 는 Node 의 지향 을 바 꿀 수 있 지만 내부 의 값 을 바 꿀 수 없습니다. Node 내부 의 값 을 바 꾸 려 면 LinkList *, 즉 구조 체 지침 을 가리 키 는 지침 을 사용 해 야 합 니 다.
결론.
Node *: 구조 체 의 지향 (예 를 들 어 다음 노드 를 가리 키 거나 NULL 을 가리 키 는 것) 을 바 꿀 수 있 지만 내부 요 소 를 바 꿀 수 없습니다.구조 체 노드 를 가리 키 는 지침 입 니 다.
LinkList *: 구조 체 내부 의 요소 (예 를 들 어 내부 data, next 지향 등) 를 바 꿀 수 있 지만 구조 체 노드 의 지향 을 바 꿀 수 없습니다.구조 체 지침 을 가리 키 는 지침 입 니 다.
예시
1. 프로그램 에서 보 듯 이 LinkList 를 사용 하면 이 노드 가 NULL 인지 아 닌 지 를 판단 할 수 있 고 상황 2 는 노드 내부 값 을 바 꿀 수 없습니다.
int main()
{
	//   
	LinkList head1;
	head1 = NULL;
	printf("    
"
); // #if 0 LinkList head2; head2->data = 1; head2->next = NULL; perror("
"
); #endif // Node head3; head3.data = 1; head3.next = NULL; printf("head3.data = %d, next = %p
"
, head3.data, head3.next); }

2. 여기 서 LinkList * head 를 이해 하면 (head) 를 하나의 전체 로 보고 내부 값 을 바 꿀 수 있다 는 LinkList 를 표시 하면 된다.swap (int a, int * b) 에서 (* a) 와 (b) 를 주소 값 을 바 꿀 수 있 는 int 형 으로 비교 하면 됩 니 다.또한 주의: 우 리 는 main 함수 에서 링크 리스트 와 같은 형식 을 정의 하지 않 고 링크 리스트 node 와 같은 형식 만 정의 합 니 다.LinkList * node 라 는 형식 은 함수 에서 만 사용 되 며, 일반적으로 (* node) 를 전체 로 간주 합 니 다. 예 를 들 어 (* a), (* b).
#include 
#include //          ,        
typedef int ElemType;
typedef struct Node
{
	ElemType data;
	struct Node *next;
}Node, *LinkList;

//     
void InitList(LinkList *head)
{
	(*head) = (LinkList)malloc(sizeof(Node));
	(*head)->data = 1;
	(*head)->next = NULL;
}


int main()
{
	LinkList head = NULL;
	InitList(&head);
	printf("head.data = %d, next = %p
"
, head->data, head->next); return 0; }

3. 그 다음 에 각 조작 이 사용 하 는 형식 도 알 수 있다.
//    
void Insert(LinkList L, ElemType e);
//    
void Delete(LinkList L, ElemType e);
//    ,      free  
void Destory(LinkList *L);

좋은 웹페이지 즐겨찾기