본문 바로가기
컴퓨터공학/알고리즘

2장 스택

by Daniel.kwak 2018. 10. 14.
1.다음과 같은 스택에서 70을 제거하려면 제거 pop연산을 모두 몇 번 수행해야 할까? 

 ->100,90,80,70 총 네번

 2.우리가 앞에서 만들어본 예제는 배열 기반 스택을 다음과 같은 구조체로 표현했다.
Typedef struct tagArrayStack{
 int Capacity;
 int Top;
 Node* nodes;
} ArrayStack;

다음 AS_Push()함수를 스택 용량이 모두 소진될 때 현재 용량의 30%를 늘릴 수 있도록 개선하시오.


Void AS_Push(ArrayStack* stack , ElementType Data){
    //스택의 용량이 가득 찼으면
    if( Stack->Top == Stack->Capacity) {
        ArrayStack *temp = new ArrayStack();
        temp.Capacity = stack->capacity * 1.3;
        Temp.nodes = new Node[temp.capacity];

        for(int i = 0 ; i < position ; i ++ ) {
            Temp[i].Data = stack[i].Data;
        }
    
        Stack = temp;    
    }
    int position = Stack->Top;
    Stack->Nodes[position].Data = Data;
    Stack->Top++;
}


3.비슷한 문제이니 패스.



'컴퓨터공학 > 알고리즘' 카테고리의 다른 글

8장 해쉬  (0) 2018.10.21
7장 우선순위 큐와 힙  (0) 2018.10.21
6장 탐색  (0) 2018.10.18
5장 정렬  (0) 2018.10.15
4장 트리  (0) 2018.10.15
3장 큐  (0) 2018.10.14