728x90
#include<stdio.h>
typedef struct {
int data;
struct node* link;
}node;
node* insert_first(node** head, int x) {
node* p = (node*)malloc(sizeof(node));
p->data = x;
p->link = head;
head= p;
}
int main() {
node* head = NULL;
//데이터 삽입 및 출력
for (int i = 0; i < 5; i++) {
head = insert_first(&head,i); //반환된 head 포인터를 저장. 아니면 null값만 출력됨
print_node(&head);
}
return 0;
}
이중 포인터는 포인터의 포인터를 저장한다. 그래서 head값을 굳이 return하지 않아도 깔끔하게 처리 가능.
처음에 이중 포인터 개념이 낯설어서 좀 헤맸는데 그림으로 보니 쉽게 이해가 가능햇다. call-by-reference 개념같은데, python에서 리스트와 함수 배울 때, 정수와 다르게 리스트는 주소값이 들어있어서 함수에서 값을 수정하고 return하지 않아도 수정된 리스트를 얻을 수 있다는 것.
그리고 진짜 tmi인데, 이번학기 수강 과목인 database 교수님이 수정과 업데이트는 다른 개념이라고 하셨다.
updata= add+delete+modify
값을 업데이트한다는 건 값을 추가하거나 삭제하고 기존의 값을 수정한다는 의미를 모두 내포하고 잇다고.. 이래서 원서 공부가 중요하다고 하셨다.
'C > 자료구조' 카테고리의 다른 글
문과생이 이해한 이중 연결리스트 (0) | 2021.04.26 |
---|---|
문과생이 이해한 원형 연결리스트 (0) | 2021.04.26 |
문과생이 이해한 단일 연결 리스트(기타 연산- 합병, 역순, 출력/순회, 탐색) (0) | 2021.04.10 |
문과생이 이해한 단일 연결 리스트(삭제 연산) (0) | 2021.04.10 |
문과생이 이해한 단일 연결 리스트(삽입 연산) (0) | 2021.04.10 |