링크드 리스트를 도저히 만들 수 없었습니다.

그림을 보고 설명을 읽으면 무슨 말인지 알 것 같았습니다.

링크드 리스트

뭐 그렇게 어려운 개념도 아니잖아?

그런데 책을 덮고 내가 코드를 짜 보려 하면 눈앞이 컴컴했습니다.
한 줄도 써내려 갈 수가 없어.
결국 다시 책을 폅니다.

struct Node {
    int data;
    struct Node* next;
};

아니, 도대체 이게 뭐야? Node 안에 Node*가 있잖아?
도대체 이 포인터는 뭘 말하는 거야?

책을 열었다 덮었다, 다시 코드를 짰다 포기했다가 몇 날 며칠을 그렇게 보냈는지..

어느 날 친구가 도움을 줬습니다.

링크드 리스트보다는 스택을 먼저 만들어 보라고.
옆 자리에 앉아서 스택부터 함께 만들어봤습니다.
친구가 설명을 해주면서 하니 왜 이렇게 쉽지?

오오, 뭔가 깨달은 것 같아.
그러나 혼자 해보면 또 잘 안됐습니다.

친구는 다시 또 도와줬습니다.
스택을 스스로 만들 수 있게 되고 며칠간 더 고생해서 드디어 링크드 리스트를 만들었습니다.
기뻤습니다.
링크드 리스트를 만들 수 있게 되자 큐, 트리, 해시 테이블 같은 데이터 구조들도 그다지 어렵지 않게 만들 수 있었습니다.

그 이후부터는 많은 것들이 수월했습니다.
학교 수업과 과제 모두.
프로그래밍의 세계에 빠져들기 시작했습니다.

지금 다시 돌아보니 인생에서 엄청 중요한 순간이었습니다.
이 단계를 넘지 못하고 포기하는 사람이 얼마나 많을까?
그 친구가 없었다면 나도 포기하진 않았을까?

그게 벌써 18년 전.
이제는 일년에 한 번을 겨우 만납니다.
만날 때마다 이 이야기를 꺼냅니다. 정말 고맙다.

현덕이에게 편지