{"id":529,"date":"2015-09-10T21:06:43","date_gmt":"2015-09-11T00:06:43","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/programacao\/?p=529"},"modified":"2021-06-18T15:45:03","modified_gmt":"2021-06-18T18:45:03","slug":"estrutura-dados-fila-simples","status":"publish","type":"post","link":"http:\/\/www.galirows.com.br\/meublog\/programacao\/estrutura-dados-fila-simples\/","title":{"rendered":"Estrutura de dados: fila simples"},"content":{"rendered":"\n<p>Artigo composto por uma apresenta\u00e7\u00e3o no Prezi explicando os conceitos b\u00e1sicos da estrutura de dados de fila a implementa\u00e7\u00e3o em C++ do funcionamento disponibilizado na apresenta\u00e7\u00e3o. O c\u00f3digo mostrado possui um link para editor online e que permite o teste da execu\u00e7\u00e3o e aplique altera\u00e7\u00f5es para teste.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Link para a presenta\u00e7\u00e3o: <a href=\"https:\/\/prezi.com\/2cnztgnpl03g\/?token=50b8a4b3eaa05f3b7c027dcef47952b350f7f8ded14135a7186db47bc2f735b9\">https:\/\/prezi.com\/2cnztgnpl03g\/?token=50b8a4b3eaa05f3b7c027dcef47952b350f7f8ded14135a7186db47bc2f735b9<\/a><\/p>\n\n\n\n<p><strong>C\u00f3digo em C++<\/strong><\/p>\n\n\n\n<p>Implementa\u00e7\u00e3o de uma fila simples e com isso limitada. A ideia \u00e9 bastante parecida com a implementa\u00e7\u00e3o da pilha mostrada em <a href=\"http:\/\/www.galirows.com.br\/meublog\/programacao\/estrutura-de-dados-pilha\/\" target=\"_blank\" rel=\"noopener\">Estrutura de dados: pilha<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code lang:c++ decode:true\"><code lang=\"cpp\" class=\"language-cpp\">\/*\nImplementa\u00e7\u00e3o de pilha simples\nAutor: Benjamin Grando Moreira\n*\/\n\n#include &lt;iostream&gt;\n#define tamanho 5\nusing namespace std;\n\n\/\/define a estrutura que ser\u00e1 a fila\n\/\/a estrutura armazena a indica\u00e7\u00e3o do inicio e final da fila e um vetor com os itens (valores) da fila\ntypedef struct{\n    int ini = 0;\n    int fim = 0;\n    int item [tamanho] ;\n} FILA;\n\n\/\/retorna se a fila est\u00e1 vazia ou n\u00e3o\nbool filaVazia(FILA p){\n    if(p.ini == p.fim) {\n        return true;\n    } else {\n        return false;\n    }\n}\n\n\/\/retorna se a fila est\u00e1 cheia ou n\u00e3o\nbool filaCheia(FILA p) {\n\tint tam = sizeof(p.item)\/sizeof(int); \/\/determina o tamanho do vetor\n\t\n    if (p.fim &lt; tam) {\n        return false;\n    } else {\n        return true;\n    }\n}\n\n\/\/adiciona valor na fila\nvoid enfilera(FILA &amp;p, int x){\n    p.item[p.fim++] = x;\n}\n\n\/\/remove valor da fila\nint desenfilera(FILA &amp;p){\n    return (p.item[p.ini++]) ;\n}\n\n\/\/mostra os valores armazenados na fila\nvoid mostraFila(FILA p) {\n\tcout &lt;&lt; \"Valores da fila: \";\n\tfor (int i = p.ini; i &lt; p.fim; i++) {\n\t\tcout &lt;&lt; p.item[i] &lt;&lt; \" \";\n\t}\n\tcout &lt;&lt; \"\\n\";\n}\n\n\n\/\/C\u00f3digo para testar a implementa\u00e7\u00e3o\nint main(){\n    FILA s; \/\/criar a fila\n    \n    \/\/Verificar que a fila est\u00e1 vazia\n    if(filaVazia(s)) {\n        cout&lt;&lt;\"A fila esta vazia.\"&lt;&lt;endl;\n    } else {\n        cout&lt;&lt;\"A fila nao esta vazia.\"&lt;&lt;endl;\n    }\n    \n    \/\/Enfilera valor e verifica se a fila est\u00e1 vazia\n    enfilera(s,10);\n    if(filaVazia(s)) {\n        cout&lt;&lt;\"A fila esta vazia.\"&lt;&lt;endl ;\n    } else {\n        cout&lt;&lt;\"A fila nao esta vazia.\"&lt;&lt;endl;\n    }\n    \n    \/\/Insere 3 elementos na fila\n    enfilera(s,20);\n    enfilera(s,30);\n    enfilera(s,40);\n\n\t\/\/Mostra os valores da fila\n    mostraFila(s);\n    \n    \/\/Verifica que a fila est\u00e1 cheia\n    if(filaCheia(s)) {\n        cout&lt;&lt;\"A fila esta cheia.\"&lt;&lt;endl;\n    } else {\n        cout&lt;&lt;\"A fila nao esta cheia.\"&lt;&lt;endl;\n    }\n    \n    \/\/Enfilera valor e verifica se a fila esta cheia\n    enfilera(s,50);\n    mostraFila(s);\n    if(filaCheia(s)) {\n        cout&lt;&lt;\"A fila esta cheia.\"&lt;&lt;endl;\n    } else {\n        cout&lt;&lt;\"A fila nao esta cheia.\"&lt;&lt;endl;\n    }\n    \n    \/\/Desempilha e mostrar o valor desempilhado\n    cout&lt;&lt;\"Valor removido da fila: \"&lt;&lt; desenfilera(s) &lt;&lt;endl;\n\n\tmostraFila(s);\n\n    if(filaCheia(s)) {\n        cout&lt;&lt;\"A fila esta cheia.\"&lt;&lt;endl;\n    } else {\n        cout&lt;&lt;\"A fila nao esta cheia.\"&lt;&lt;endl;\n    }\n    \n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>Observe que essa \u00e9 uma implementa\u00e7\u00e3o simples da fila e ela mostrar\u00e1 que fila est\u00e1 cheia mesmo quando ela n\u00e3o estiver (desde que o indicador de fim tenha chego ao final da fila.<\/p>\n\n\n\n<p>Experimente esse c\u00f3digo online: <a href=\"http:\/\/ideone.com\/y5aWLd\" target=\"_blank\" rel=\"noopener\">http:\/\/ideone.com\/y5aWLd<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Artigo composto por uma apresenta\u00e7\u00e3o no Prezi explicando os conceitos b\u00e1sicos da estrutura de dados de fila a implementa\u00e7\u00e3o em C++ do funcionamento disponibilizado na apresenta\u00e7\u00e3o. O c\u00f3digo mostrado possui um link para editor online e que permite o teste da execu\u00e7\u00e3o e aplique altera\u00e7\u00f5es para teste.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[3],"tags":[25,28],"class_list":["post-529","post","type-post","status-publish","format-standard","hentry","category-c","tag-estrutura-de-dados","tag-fila"],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/comments?post=529"}],"version-history":[{"count":3,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/529\/revisions"}],"predecessor-version":[{"id":1083,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/529\/revisions\/1083"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/media?parent=529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/categories?post=529"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/tags?post=529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}