CH5원형연결리스트 (3)

05-1. 원형 리스트(Linked List)3 ③

헤더 파일을 보자

#ifndef __C_LINKED_LIST_H__
#define __C_LINKED_LIST_H__

#define TRUE	1
#define FALSE	0

typedef int Data;

typedef struct _node
{
	Data data;
	struct _node * next;
} Node;

typedef struct _CLL
{
	**Node * tail;**
	Node * cur;
	Node * before;
	int numOfData;
} CList;

typedef CList List;

void ListInit(List * plist);
**void LInsert(List * plist, Data data);
void LInsertFront(List * plist, Data data);**

int LFirst(List * plist, Data * pdata);
int LNext(List * plist, Data * pdata);
Data LRemove(List * plist);
int LCount(List * plist);

#endif

구조체 정의만 보고는 단순인지 원형인지 구별하기 힘들다.

**LInsert()**가 두개가 있음. 하나는 머리에 추가, 하나는 꼬리에 추가하는 함수임.

초기화에 관해서 저자가 본인 관점을 이야기함. 앞서서 내가 Init()함수에서 왜 전부 초기화 하지 않는지 의문을 가진적이 있음. 저자는 초기화 타이밍을 전부 구별하는 습관이 있다고 함. 그래서 필요한 함수에서 초기화를 진행.

하지만 이건 그냥 스타일차이이고, Init에서 전부 초기화하는것도 스타일차이라고 함.

CH5원형연결리스트(4)

05-1. 원형 리스트(Linked List)3 ④