[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Uma pilha para ligar aquele radio velho.
From: |
Ivan lopes |
Subject: |
Uma pilha para ligar aquele radio velho. |
Date: |
Wed, 21 Jun 2006 03:23:03 -0200 |
Amigos este exemplo eh para mostrar que esse tal de bash
eh um cara versatil e simpatico.
$ stack.sh
#!/bin/bash
# $Id:$
# Federal University of Rio de Janeiro
# Author: Ivan carlos da Silva Lopes
# Mail: lopesivan (dot) ufrj (at) gmail (dot) com
#
# License: GPL
# Language: shell script
# File: stack.sh
# Description:
#
# + Operacoes primitivas
# 1- push(s,1) incluir item na pilha, empilhar.
# 2- pop(s) exclui item no topo da pilha e retorna o item.
#
# + Operacoes adicionais
# 1- isempty(s) verificar se a pilha encontra-se vazia.
# 2- stacktop(s) retorna o item no topo da pilha.
# map <F5> :call CommentInLine(0, "#", "-", "#", " ")<cr>
# Global variables
declare -a STACK # array
declare -r SIZE_STACK=5 # read only
declare -i i=0 # integer
##############################################################################
# push(s,1) #
#----------------------------------------------------------------------------#
# Description: #
# incluir item na pilha, empilhar. #
# Input: #
# stack -- nome da pilha utilizada. #
# item -- valor adicionado na cabeca da pilha. #
# Output: #
# #
# Return: #
# #
##############################################################################
function push()
{
test ! $# -eq 2 && \
echo "Usage: push stack item" >&2 && \
exit 1
local stack=$1
local item=$2
if [[ $i == $SIZE_STACK ]]
then
echo "Stack Overflow" >&2
exit 1
fi
eval $stack[i++]=$item
}
##############################################################################
# pop(s) #
#----------------------------------------------------------------------------#
# Description: #
# exclui item no topo da pilha e retorna o item. #
# Input: #
# stack -- nome da pilha utilizada. #
# Output: #
# #
# Return: #
# item -- item removido da pilha. #
##############################################################################
function pop()
{
test ! $# -eq 1 && \
echo "Usage: pop stack" >&2 && \
exit 1
local stack=$1
if isempty
then
echo "Stack Underflow" >&2
exit 1
fi
eval unset $stack[--i]
}
##############################################################################
# isempty() #
#----------------------------------------------------------------------------#
# Description: #
# verificar se a pilha encontra-se vazia. #
# Input: #
# #
# Output: #
# #
# Return: #
# stack_empty -- boleano referente ao estado da pilha. #
##############################################################################
function isempty(){
local stack_empty=1
if [[ $i == 0 ]]
then
stack_empty=0
fi
return $stack_empty
}
function show()
{
test ! $# -eq 1 && \
echo "Usage: push stack" >&2 && \
exit 1
local stack=$1
eval echo [\${$stack[*]}]
}
##############################################################################
# ---------------------------------- main ---------------------------------- #
##############################################################################
push STACK 1
show STACK
push STACK 2
show STACK
push STACK 3
show STACK
push STACK 4
show STACK
push STACK 5
show STACK
pop STACK
show STACK
pop STACK
show STACK
pop STACK
show STACK
pop STACK
show STACK
pop STACK
show STACK
pop STACK
show STACK
exit 0 # end-of-file
--
[ ]'s
Ivan Carlos Da Silva Lopes
Engenheiro Eletronico e Computacao
UFRJ
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Uma pilha para ligar aquele radio velho.,
Ivan lopes <=