게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
연결리스트 포인터 사용 유무가 이해가 안됩니다 ㅠㅠ
게시물ID : programmer_9279짧은주소 복사하기
작성자 : 無김치
추천 : 0
조회수 : 497회
댓글수 : 3개
등록시간 : 2015/04/11 23:00:12
옵션
  • 본인삭제금지
예를 들어서
 
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에서는 그렇게 안따라가는지.....ㅠㅠ
 
이걸 이해해야 어케 코딩을 할 수 있을텐데 도저히 모르겠네요...누가 설명 좀 해주시면 정말 감사하겠습니다..
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호