2017-04-19 8 views
-2

을 (목록의 상단에 새로운 노드를 추가) 빈 스택과 노드가 두 개 이상인 스택에서 작동합니다.Push 기능 C++ 나는 주어진 동안 스택의 상단에 새로운 노드를 추가하는 기능을 만드는 방법을 알아 내려고 노력하고 있어요

구조에 대한 포인터가 어떻게 작동하는지 추가하고 제거하는 방법을 이해하는 데 어려움을 겪고 있습니다. 따라서 모든 설명을 이해할 수 있습니다. 감사!

+1

이것은 단일 링크 목록으로 구현 된 스택처럼 보입니다. 연결된 목록을 이해하는 가장 좋은 방법 중 하나는 빨판을 종이에 그려서 노드가 의미있는 목록을 만들기 위해 상호 연결해야하는 방법을 관찰하는 것입니다. 어떤 일이 발생해야하는지 시각화하면 나머지는 훨씬 쉬워집니다. – user4581301

+0

C++의 목록 컨테이너 사용 http://www.cplusplus.com/reference/list/list/ – RomMer

답변

0

s는 'bottom'과 'top'의 두 값을 가지며, top은 스택의 속성이지만 bottom은 스택의 시작 포인터 여야합니다 (연결된 목록의 형태 임)

void push(stack *s, int key) 
{ 
    struct node newNode; 
    newNode.key = key; 
    newNode.next = NULL; 

    if(s->top == NULL) 
    { 
     s->top =&newNode; 
     s->bottom =&newNode; 
    } 
    else{ 
    //Assigning new node to top 
    s->top->next = &newNode; 

    //pointing top to new node 
    s->top = &newNode; 
    } 
}