typedef struct _node
{
LData data;
struct _node * next;
} Node;
typedef struct _linkedList
{
Node * head;
Node * cur;
Node * before;
int numOfData;
int (*comp)(LData d1, LData d2);
} LinkedList;
void SInsert(List * plist, LData data)
{
Node * newNode = (Node*)malloc(sizeof(Node));
Node * pred = plist->head;
newNode->data = data;
while(pred->next != NULL &&
plist->comp(data, pred->next->data) != 0)
{
pred = pred->next;
}
newNode->next = pred->next;
pred->next = newNode;
(plist->numOfData)++;
}
멤버 연산자(.)
구조체의 멤버를 참조하기 위해 사용하는 연산자
구조체 이름.멤버 이름
포인터 멤버 연산자(->)
구조체 포인터의 멤버를 참조하기 위해 사용하는 연산자
구조체 포인터 이름->멤버 이름
pred->next->data
어떻게 이런 표현이 가능한지 문법적으로 조금 더 알아보고자 위의 정의들을 찾아보았다.
정의를 정확히 알고나니 위 표현을 해석하는 것은 쉬웠다.
즉,
pred는 Node 구조체 포인터이므로 pred->next는 다음 Node를 가리키고, 그 대상은 head의 next다.
head의 next가 가리키는 대상 또한 Node 구조체 포인터이므로
한번 더 -> 연산자를 이용해서 그 멤버 내의 data를 참조하는 것은 가능하게 된다.
'language > 자료구조' 카테고리의 다른 글
AVL 트리와 균형 인수 (0) | 2016.08.07 |
---|