LLS_Push중에서 궁금점이..
2010-04-06
|
by jagalet
2482
오류난건 아닌거 같은데요 ㅎㅎ
void LLS_Push(LLS* Stack,Node* NewNode){
if(Stack->List == NULL){ // 스택이 비었다면 :
Stack->List = NewNode // NewNode를 첫번째 노드로 등록
}
else{ // 스택이 안비었다면, 즉 Top도 무언가를 가르키고 있는상황이죠?
Node* OldTop = Stack->List;
while(OldTop->NextNode != NULL){ Top까지 올라가는 연산 수행하는거맞죠?
OldTop = OldTop->NextNode;
}
OldTop->Next = NewNode; // Top위에 NewNode가 얹어지네요
}
Stack->Top = NewNode; 스택구조체의 Top는 새로운 탑 NewNode 를 가르키죠?
}
그런데 여기서 흠...
함수의 첫번째 if문
if(Stack->List == NULL) // 여기서는 스택이 빈걸 체크하고
else // 여기선 안비었따는걸 체크하죠!! 체크라기보단 조건문이죠 ㅎㅎ
else문으로 들어왔을 경우 스택이 안비었고 고로
Stack->Top 는 무언가를 가르킨다는건데.. 아마도 탑노드를 가르키겠죠
그런데 밑에서 while문으로 맨밑노드부터 탑노드 까지 올라가는 연산을 해야할
필요가 잇을까요? ㅠㅠ
그냥 간단히
if(Stack->List == NULL){
Stack->List = NewNode;
}else{
Stack->Top->NextNode = NewNode;
}
Stack->Top = NewNode;
이렇게 하면 연산이 더 줄어들꺼같아서요....
물론 코드야 각자 다르게할수있지만 그래도
최적화 코드가 보기 좋자나요?...
제가 뭐 놓치고 있는거라면 집어 주세요