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