C 언어
스택은 LIFO(Last In First Out) 기술을 기반으로 작동하는 데이터 구조입니다. std::stack을 사용하면 한 쪽 끝에서만 요소를 추가 및 제거할 수 있습니다.
std::stack 클래스는 컨테이너 어댑터입니다. 컨테이너 객체는 유사한 데이터 유형의 데이터를 보유합니다. 다양한 시퀀스 컨테이너에서 스택을 생성할 수 있습니다. 컨테이너가 제공되지 않으면 기본적으로 deque 컨테이너가 사용됩니다. 컨테이너 어댑터는 반복자를 지원하지 않으므로 데이터를 조작하는 데 사용할 수 없습니다.
이 C++ 튜토리얼에서 배우게 될 것입니다.
스택을 생성하려면 코드에
template <class Type, class Container = deque<Type> > class stack;
스택 멤버 유형은 다음과 같습니다.
C++ 스택은 다음과 같은 기본 작업을 지원합니다.
1단계) 처음에는 빈 스택이 있습니다. 빈 스택의 맨 위는 -1로 설정됩니다.
2단계) 다음으로 요소 5를 스택에 푸시했습니다. 스택의 맨 위는 요소 5를 가리킵니다.
3단계) 다음으로 요소 50을 스택에 푸시했습니다. 스택의 맨 위가 이동하고 요소 50을 가리킵니다.
4단계) 그런 다음 스택에서 맨 위 요소를 제거하는 팝 작업을 수행했습니다. 요소 50이 스택에서 팝됩니다. 스택의 맨 위는 이제 요소 5를 가리킵니다.
stack::push() 함수는 스택의 맨 위에 새 항목을 추가합니다. 스택 크기는 삽입 후 1만큼 증가합니다. 함수는 다음 구문을 사용합니다.
stack.push(value)
값은 스택에 삽입할 항목입니다.
stack::pop() 함수는 스택의 맨 위 요소를 제거합니다. 이것은 스택의 최신 항목입니다. 제거 후 스택 크기가 1 감소합니다. 다음은 함수 구문입니다.
stack.pop()
이 함수는 매개변수를 사용하지 않습니다.
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> st;
st.push(10);
st.push(20);
st.push(30);
st.push(40);
st.pop();
st.pop();
while (!st.empty()) {
cout << ' ' << st.top();
st.pop();
}
}
출력:
다음은 코드의 스크린샷입니다.
코드 설명:
스택에는 스택과 그 값을 가지고 놀 수 있는 기능이 내장되어 있습니다. 여기에는 다음이 포함됩니다.
#include <iostream>
#include <stack>
using namespace std;
void createStack(stack <int> mystack)
{
stack <int> ms = mystack;
while (!ms.empty())
{
cout << '\t' << ms.top();
ms.pop();
}
cout << '\n';
}
int main()
{
stack <int> st;
st.push(32);
st.push(21);
st.push(39);
st.push(89);
st.push(25);
cout << "The stack st is: ";
createStack(st);
cout << "\n st.size() : " << st.size();
cout << "\n st.top() : " << st.top();
cout << "\n st.pop() : ";
st.pop();
createStack(st);
return 0;
}
출력:
다음은 코드의 스크린샷입니다.
코드 설명:
다음은 다른 내장 스택 기능입니다.
#include <iostream>
#include <stack>
#include <cstdlib>
using namespace std;
int main() {
stack<int> st1;
stack<int> st2;
st1.emplace(12);
st1.emplace(19);
st2.emplace(20);
st2.emplace(23);
st1.swap(st2);
cout << "st1 = ";
while (!st1.empty()) {
cout << st1.top() << " ";
st1.pop();
}
cout << endl << "st2 = ";
while (!st2.empty()) {
cout << st2.top() << " ";
st2.pop();
}
}
출력:
다음은 코드의 스크린샷입니다.
코드 설명:
STL(표준 템플릿 라이브러리)은 공통 C++ 데이터 구조를 제공하는 템플릿 클래스와 함께 제공됩니다. 따라서 STL에서도 스택을 구현할 수 있습니다. 이 라이브러리를 코드에 포함하고 스택을 정의하는 데 사용합니다.
stack<T> st;
위의 구문은 데이터 유형 T의 요소에 대한 스택 st를 선언합니다.
#include <iostream>
#include <stack>
#include <cstdlib>
using namespace std;
int main() {
stack<int> st;
st.push(12);
st.push(19);
st.push(20);
cout << st.top();
cout << st.size();
}
출력:
다음은 코드의 스크린샷입니다.
코드 설명:
C 언어
지금까지 C#을 사용하여 콘솔 기반 애플리케이션을 만드는 방법을 살펴보았습니다. 그러나 실제 시나리오에서 팀은 일반적으로 Visual Studio와 C#을 사용하여 Windows Forms 또는 웹 기반 응용 프로그램을 만듭니다. Windows 양식 응용 프로그램은 컴퓨터에서 실행되도록 설계된 응용 프로그램입니다. 웹 응용 프로그램이 되기 때문에 웹 브라우저에서 실행되지 않습니다. 이 자습서에서는 Windows 기반 응용 프로그램을 만드는 방법에 중점을 둘 것입니다. 또한 C# Windows 응용 프로그램의 다양한 요소를 사용하
C에서 malloc이란 무엇입니까? malloc() 함수는 메모리 할당을 나타냅니다. 메모리 블록을 동적으로 할당하는 데 사용되는 함수입니다. 지정된 크기의 메모리 공간을 예약하고 메모리 위치를 가리키는 널 포인터를 반환합니다. 반환된 포인터는 일반적으로 void 유형입니다. 그것은 우리가 모든 포인터에 malloc 함수를 할당할 수 있다는 것을 의미합니다. 구문 ptr = (cast_type *) malloc (byte_size); 여기, ptr은 cast_type의 포인터입니다. malloc 함수는 할당된 byte_s