c 언어 stack 예제

더 복잡한 다른 작업이 스택에 적합하지 않을 것으로 간주합니다. 예를 들어 스택이 넘어질 수 있으므로 위에서 3번째 책을 직접 꺼낼 수 없습니다. 동적 데이터 구조의 좋은 예는 동적 목록을 사용하고 시작하고 지우고 푸시하고 팝하는 함수를 포함하는 간단한 스택 라이브러리입니다. 라이브러리의 헤더 파일은 다음과 같습니다. 스택의 c 프로그램을 작성합니다. 이 질문에 대해 설명하십시오 스택에서 요소를 팝업하려면 요소의 데이터를 얻고 스택 포인터를 다음 요소로 가리키고 제거해야합니다. 다음 그림은 스택에서 상위 요소(5)를 팝하는 방법을 보여 줍니다. 일반적으로 자체 모듈에 데이터 구조를 넣는 것이 편리하므로 stack.h 및 stack.c 파일을 만들려고 합니다. 스택을 사용해야 하는 사람은 stack.h를 포함하고 코드를 stack.c와 연결해야 합니다(실제로 해당 코드를 해당 개체 파일, stack.o와 연결). 스택 콘텐츠를 표시하기 위해 첫 번째 요소에서 NULL로 스택 요소를 트래버스합니다.

스택 라이브러리에 dup, 개수 및 추가 함수를 추가하여 스택의 최상위 요소를 복제하고 스택의 요소 수 수를 반환하고 스택의 상위 두 요소를 추가합니다. B가 스택의 맨 위에 있기 때문에 값 맨 위 배열에 B 인덱스를 저장합니다(즉, 1). 우리가 고려할 다음 함수는 스택을 정리하는 함수입니다. 동적으로 할당 된 메모리를 제거하고 스택을 일부 합리적인 상태로 설정해야합니다. 이 예제에서는 맨 위가 최대 크기에서 1을 뺀 값(예: 0 = 1 – 1)과 같으면 가득 차 있음을 알 수 있습니다. 따라서, 우리의 충만 기능은 … 구현: 스택을 구현하는 방법에는 두 가지가 있습니다. 컴파일 타임이 아닌 런타임에 스택의 최대 크기를 결정할 수 있기를 원합니다. 따라서 배열을 사용하여 스택을 구현하는 단점은 무엇입니까? 둘째, 스택의 머리 포인터를 NULL로 설정하여 스택을 초기화해야 합니다. 이제 스택에서 푸시(스택, `C`)를 푸시하여 주는 것을 가정해 보겠습니다. 스택 함수를 스택에 전달할 때 참조로 전달합니다: int pop (int stack[]) { int ret; IF (상단 == -1) { ret = 0; 상태 = 0; } 기타 { 상태 = 1; ret = 스택 [상단]; –top; } 반환 ret; } void 디스플레이 (int[스택]) { int i; printf(“n”); (위쪽 == -1) printf(“빈”); 기타 { 에 대한 {(i=top; i>=0; –i) printf (“n—n|%3d |n——-“,스택[i]); } printf (“n”); } 추상 스택(및 일반적인 이름)에 필요한 최소한의 작업은 다음과 같습니다: 이 섹션의 C 프로그램은 다른 데이터 구조를 사용하여 Queue의 구현을 보여 줍니다.