CH5원형연결리스트 (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)