자료구조 31

[큐] 큐 Queue 6/7

1. 큐 ⓐ 특징 - FIFO(First In First Out)의 선입선출 - 저장된 순서에 의해 데이트거 나오는 자료 구조 - 선형 자료구조 ⓑ Stack vs Queue Stack과 Queue에서의 차이는 자료의 추가, 삭제 및 반환에서 나타난다. 일단 구조상 스택은 LIFO인 반면 큐는 FIFO를 가진다. 이에 따라 자료 추가/삭제시 다음과 같은 차이를 보인다. Stack : 제일 위인 Top에서만 자료의 추가, 삭제 및 반환 가능 Queue : 추가 → 제일 뒤의 rear에서만 가능 / 삭제 및 반환 → 큐의 제일 앞인 front에서만 가능 ⓒ 주요 기능 makeQue() : 큐 생성 enQue() : 자료 추가 deQue() : 자료 삭제 peek() : 큐의 맨 앞 원소 반환 // Queue..

[스택] 응용 2 : 중위표기를 후위표기 전환

자자... 이번엔 스택을 이용하여 계산기를 만들어 보겠습니다~ 무려 사칙연산과 ( ) 1+1)를 후위표기법(ex>11+)로 전환해야 합니다. 그 후에 계산을 하지요~ 자일단 후위표기에대해서 한번 알아봅시다. 1) 중위 표기 : 연산을 중간에 써준다 ex) a+b 2) 후위 표기 : 연산을 맨뒤에 써준다 ex )ab+ >>장점 : 괄호가 사라진다. ex ) 중위표시 : (2+3)*3-1 후위표시 : 23+3*1- 후위표시는 각각의 숫자를 push하여 스텍에 쌓은뒤 연산자가 나오면 숫자들을 pop하면서 연산을 실행해준다. 연산한 결과를 return하여 스택에 쌓고 다음 숫자를 받아들여 스텍에 쌓은 뒤 연산자가 나호면 숫자들을 pop하여 연산을 실행한다. 이를 반복하여 값을 구한다. ※스택을 이용하여 치리하는..

[스택] 응용 1 : 문자 역순 출력프로그램

#include #include #include typedef struct nodetype{ char data; struct nodetype *next_ptr; }node; typedef struct stacktype{ int count; node *head_ptr; }stack; stack *makestack(){ stack *returnstack; returnstack = (stack *)malloc(sizeof(stack)); if( returnstack != NULL ){ memset(returnstack,0,sizeof(stack)); return returnstack; }else{ printf("Error!! Memory\n"); return 0; } return 0; } void Push(s..

[스택] 링크드리스트를 이용한 stack 5/27

#include #include #include typedef struct nodetype{ // 노드의 형식 int data; struct nodetype *next_ptr; }node; typedef struct stacktype{ // 리스트 스택의 형식 int count; node *head_ptr; }stack; stack *makestack(){ // 스택을 만듭니다. stack *returnstack; // 반환한 스택을 생성후 returnstack = (stack *)malloc(sizeof(stack)); // 메모리할당을 한후 if( returnstack != NULL ){ // 검사를 해줍니다. memset(returnstack,0,sizeof(stack)); // 초기화를 한후에 r..

[스택] 배열을 이용한 스택 구현 5/27

#include #include #include typedef struct nodetype{ // 자료 묶음 int data; }node; typedef struct Astack_type{ // stack의 형식 int max; int count; node *data_ptr; }stack; stack *makestack(int max){ // stack을 생성하는 함수입니다. stack *returnstack; // 반환한 스택을 만든후 returnstack = (stack *)malloc(sizeof(stack)); // 메모리 할당을 한후 if( returnstack != NULL ){ // 동적 할당이 잘되었는지 확인 후 returnstack -> count = 0; // 반환할 스택에 들어가야할 ..

[스택] 스택(stack) 5/26

~프로로그~ 스택의 기본적인 성질에 대해서 알아보자~ --------------------------------------- *Stack(스택) - 특징 ⓐ 선형 자료구조 > 전후관계가 모두 1:1 ⓑ LIFO(Last In First Out) "후입 선출" = FILO(First In Last Out) "선입 후출" >> " 가장 나중에 들어간 자료가 가정 먼저 나온다!!" ⓒ 자료의 추가, 삭제(반환)은 스택의 끝에서만 가능 - 개념 ⓐ Push : 스택에 자료를 저장 하는 것 >스택의 크기를 벗어나면 Overflow(넘침)가 발생한다.(메모리상 다른 곳을 건드려 다른프로그램에 영향을 끼침) ⓑ Pop : 스택에서 자료를 봔환 및 삭제 하는 것 >공백상태의 스택을 Pop하면 underflow(부족)가..

[리스트]이중연결리스트 (더블링크리스트) 5/25

#include #include #include typedef struct nodetype{ // 노드하나의 형식을 정의 해줍니다. int data; struct nodetype *pre_node; // 자신 이전을 가르키는 노드 입니다. struct nodetype *next_node; // 자신 다음을 가르키는 노드 입니다. }node; typedef struct listtype{ int count; // 저장된 자료 개수 입니다. node headnode; // 더미노드(해더노드)입니다. }list; list *makelist(){ // 리스트를 만드는 함수입니다. list *returnlist; // 생성할 리스트 입니다. 반환 값 returnlist = (list *)malloc(sizeof(l..

[리스트]원형리스트 / 순환 리스트 구현 +a 해더노드vs해더포인터 5/25

#include #include #include typedef struct nodetype{ // 연결리스트 node를 만듭니다 int data; struct nodetype *next_ptr; // node(노드)는 자료 + 연결 이라고했죠? // data라는 자료와 다음 노드를 연결하는 포인터 next_ptr로 구성했습니다 }node; typedef struct listtype{ // 리스트의 형태를 구성합니다. int count; node headnode; // 해더 노드를 사용했습니다. }list; list *makelist(){ // 리스트를 생성하는 함수입니다. list *returnlist; returnlist = (list *)malloc(sizeof(list)); if ( returnli..

[리스트]연결리스트(링크드리스트) 각 단계별 해설 有 구현 5/24

#include #include #include typedef struct nodetype{ // 연결리스트 node를 만듭니다 int data; struct nodetype *next_ptr; // node(노드)는 자료 + 연결 이라고했죠? // data라는 자료와 다음 노드를 연결하는 포인터 next_ptr로 구성했습니다 }node; typedef struct listtype{ // 리스트의 형태를 구성합니다. int count; node headnode; // 해더 노드를 사용했습니다. }list; list *makelist(){ // 리스트를 생성하는 함수입니다. list *returnlist; returnlist = (list *)malloc(sizeof(list)); if ( returnli..

[리스트]링크드리스트 (연결리스트) 5/23

연결리스트에 대해서 알아보자... 일단 연결리스트는 노드들로 구성되어있는 자료구조이다. 여기서 노드라하면 저장할 자료와 다음 노드를 가르키는 포인터를 가지고 있는 것을 말한다, 즉, "노드 = 자료 + 링크"라 할 수 있다. 이제 본격적으로 링크드 리스트의 종류에 대해서 알아보자... 1. 단순 연결리스트 말 그대로 단순한 연결리스트이다-_-; 선형구조를 이루고 있다. 2. 원형 연결리스트 리스트의 마지막 노드가 리스트의 첫번째 노드를 연결하는(가르키는) 자료구조이다. 3. 이중 연결리스트 노드들이 양방향으로 연결되어 있는 연결리스트를 말한다. 특정 노드 기준으로 이전 노드에 접근하기 쉬운 장점이 있다.(접근의 편의성!!) 이에 비해, 메모리 공간을 더 사용해야 하는 단점이 있다. ... 간단하게 연결리..