상세 컨텐츠

본문 제목

스택의 요소를 구조체로 하기

Coding/자료구조(with C)

by 세미531 2021. 10. 17. 03:39

본문

728x90

만약 스택에 저장되어야 하는 값이 정수나 문자가 아니고 더 복잡한 구조를 갖는 요소에면 어떻게 해야 할까? 예를 들면 하생에 대한 정보라면 학생의 학번, 이름, 주소 등의 정보가 요소에 포함되어야 할 것이다. 이런 경우에는 스택에 구조체를 저장하면 된다. 구조체 안에 필요한모든 정보를 넣으면 된다. 아래의 프로그램에 구조체로 이루어진 일반적인 스택에 대한 코드를 나타내었다.

#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;
    }

 

 

 

 

728x90

관련글 더보기

댓글 영역