예를 들어서
node_p appendTerm(node_p poly, int c, int e, node_p *last);
node_p polyAdd(node_p A, node_p B);
node_p appendTerm(node_p poly, int c, int e, node_p *last)
{
node_p newNode;
newNode = (node_p)malloc(sizeof(struct listNode));
newNode->exp = e;
newNode->coef = c;
if ( poly == NULL ) {
poly = newNode;
*last = newNode;
}
else {
(*last)->link = newNode; // *last의 우선순위가 높아야 하기때문에 (*last)로 사용
*last = newNode;
}
(*last)->link = NULL;
return poly;
}
node_p polyAdd(node_p A, node_p B)
{
int sum;
node_p p;
node_p q;
node_p r;
node_p C;
p = A;
q = B;
r = NULL;
C = NULL;
while ( p != NULL && q != NULL ) {
if ( p->exp == q->exp ) {
sum = p->coef + q->coef;
if ( sum != 0 ) {
C = appendTerm(C, sum, p->exp, &r);
}
p = p->link;
q = q->link;
}
else if ( p->exp < q->exp ) {
C = appendTerm(C, q->coef, q->exp, &r);
q = q->link;
}
else if ( p->exp > q->exp ) {
C = appendTerm(C, p->coef, p->exp, &r);
p = p->link;
}
}
while ( p != NULL ) {
C = appendTerm(C, p->coef, p->exp, &r);
p = p->link;
}
while ( q != NULL ) {
C = appendTerm(C, q->coef, q->exp, &r);
q = q->link;
}
r->link = NULL;
return C;
}
가 있을때요...(구글링해서 아무거나 눈에 띄는거 일단 긁어왔습니다..)
node_p appendTerm 쪽에 보면 node_p poly는 포인터를 안붙이고 node_p *last의 경우에는 붙여서 선언을 하는데 이 차이를 모르겠어요...
원글쓴이가 주석 달아놓은거 보면 'poly만 return을 하기 때문에, last는 포인터로 "참조"해서 사용한다' 고 되어 있는데 그러면 어째서 PollyAdd에서는 그렇게 안따라가는지.....ㅠㅠ
이걸 이해해야 어케 코딩을 할 수 있을텐데 도저히 모르겠네요...누가 설명 좀 해주시면 정말 감사하겠습니다..