μ€ν
'λ¨Όμ λ€μ΄κ° κ²μ΄ λμ€μ λμ€λ μλ£κ΅¬μ‘°'
Last In First Out (LIFO) ꡬ쑰μ΄λ€.
μ€νμ λ°°μ΄κ³Ό μ°κ²° 리μ€νΈλ‘ λνλΌ μ μλ€.
μ€νμ ꡬμ±
- μλ¨ (top) : μ€νμμ μ μΌ λμ€μ μ λ ₯λ λ°μ΄ν°μ μμΉ
- νλ¨ (bottom) : μ€νμμ μ μΌ λ¨Όμ μ λ ₯λ λ°μ΄ν°μ μμΉ
- μμ (element) : μ€νμ μ μ₯λλ λ°μ΄ν° κ·Έ μ체
- 곡백 (empty stack) : μλ¬΄λ° λ°μ΄ν°λ κ°κ³ μμ§ μμ μ€ν
μ€νμ μ°μ°
push() : μ€νμ λ°μ΄ν°λ₯Ό μΆκ°νλ€.
pop() : μ€νμμ λ°μ΄ν°λ₯Ό μμ νλ€.
is_empty(s) : μ€νμ΄ κ³΅λ°±μνμΈμ§ κ²μ¬νλ€.
is_full(s) : μ€νμ΄ ν¬νμνμΈμ§ κ²μ¬νλ€.
create() : μ€νμ μμ±νλ€.
peek(s) : μμλ₯Ό μ€νμμ μμ νμ§ μκ³ λ³΄κΈ°λ§ νλ μ°μ°μ΄λ€.
push μ°μ°
void push(int value){ //μ€νμ λ°μ΄ν° μ½μ
if(IsFull()==true) //μ€νμ΄ κ°λ μ°¨λ©΄
printf("μ€νμ΄ κ°λ μ°Όμ΅λλ€.");
else //λΉ κ³΅κ°μ΄ μμΌλ©΄
stack[++top]=value;
}
pop μ°μ°
int pop(){ //λ°μ΄ν° λΉΌκΈ°
if(IsEmpty()==true)
printf("μ€νμ΄ λΉμμ΅λλ€.");
else
return stack[top--];
}
is_empty() μ°μ°
int IsEmpty(){
if(top<0)
return true;
else
return false;
}
is_full μ°μ°
int IsFull(){
if(top>=MAX_STACK_SIZE-1)
return true;
else
return false;
}
ν
First In First Out (FIFO) ꡬ쑰μ΄λ€.
λ°°μ΄λ‘ ꡬννκ² λλ©΄ μ νλ 곡κ°μμ dataκ° ν μͺ½μΌλ‘λ§ μ΄λνμ¬ νκ³μ μ΄λ₯΄λ Drifting(νλ₯) νμ λ°μνλ€.
μ νν, μννκ° μλ€.
is_empty()
int IsEmpty(void){
if(front==rear)//frontμ rearκ° κ°μΌλ©΄ νλ λΉμ΄μλ μν
return true;
else return false;
}
is_full()
int IsFull(void){
int tmp=(rear+1)%MAX;
if(tmp==front)
return true;
else
return false;
}
add()
void addq(int value){
if(IsFull())
printf("Queue is Full.\n");
else{
rear = (rear+1)%MAX;
queue[rear]=value;
}
delete()
int deleteq(){
if(IsEmpty())
printf("Queue is Empty.\n");
else{
front = (front+1)%MAX;
return queue[front];
}
}
μνν