만약 스택에 저장되어야 하는 값이 정수나 문자가 아니고 더 복잡한 구조를 갖는 요소에면 어떻게 해야 할까? 예를 들면 하생에 대한 정보라면 학생의 학번, 이름, 주소 등의 정보가 요소에 포함되어야 할 것이다. 이런 경우에는 스택에 구조체를 저장하면 된다. 구조체 안에 필요한모든 정보를 넣으면 된다. 아래의 프로그램에 구조체로 이루어진 일반적인 스택에 대한 코드를 나타내었다.
#include <stdio.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
#include <malloc.h>
#include <string.h>
#define MAX_STACK_SIZE 100
#define MAX_STRING 100
typedef struct {
int student_no;
char name[MAX_STRING];
char address[MAX_STRING];
} element;
element stack[MAX_STACK_SIZE];
int top = -1;
// 공백 상태 검출 함수
int is_empty()
{
return (top == -1);
}
// 포화 상태 검출 함수
int is_full()
{
return (top == (MAX_STACK_SIZE - 1));
}
// 삽입함수
void push(element item)
{
if (is_full()) {
fprintf(stderr, "스택 포화 에러\n");
return;
}
else stack[++top] = item;
}
// 삭제함수
element pop()
{
if (is_empty()) {
fprintf(stderr, "스택 공백 에러\n");
exit(1);
}
else return stack[top--];
}
//피크함수
element peek() {
if (is_empty()) {
fprintf(stderr,"스택 공백 에러\n");
exit(1);
}
else return stack[top];
}
int main() {
element ie = {2019001,"Hong","seoul"};
element oe;
push(ie);
oe = pop();
printf("학번 : %d\n", oe.student_no);
printf("이름 : %s\n", oe.name);
printf("주소 : %s\n", oe.address);
return 0;
}

| 동적 배열 스택 (0) | 2021.10.17 |
|---|---|
| 관련된 데이터를 함수의 매개변수로 전달하는 방법 (0) | 2021.10.17 |
| 전역 변수로 스택 구현하는 방법 (0) | 2021.10.17 |
| 구조체와 포인터 (0) | 2021.10.17 |
| 동적 메모리 할당 (0) | 2021.10.17 |
댓글 영역