환형큐에 대한 질문입니다.

shs0917의 이미지

환형큐에서 Full과 Empty를 어떻게 체크를 해야 올바른 것인가요?
제가 공부하다 보니 Full이나 Empty나 rear==front일 경우에
해당되는거 같아서요.. 조언 부탁 드립니다.

sozu의 이미지

보통 배열기반의 환형큐에서는 Full, Empty를 구분하기 위해

두가지 방법을 씁니다.

1) Front 다음에 한칸은 무조건 비워둡니다.

2) Length 를 저장하는 변수를 따로 둡니다.

그림을 그려보시면서 해보시면 더욱 좋을것 같습니다 :D

-----------
청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법
http://sozu.tistory.com

ifyou의 이미지

공부에 아주 열심이네요 ^^

생각해보니까 학교 수업진도와도 얼추 비슷한 것 같습니다.

학문적이나 수치적으로 최적의 방법도 있고 일반적으로 많이 쓰는 방법들이
존재하겠지만, 어떤 문제 해결에 있어서 1개의 정답만 존재하는 것은 아닙니다.

1byte라도 아껴야 할 상황이 있는가하면, 10Mbyte정도는 할당해서 대충 사용해도 되는 경우도 있죠. 그렇다고 대충하라는 말은 아니고요.. 일단 자신의 생각을 가지고 먼저 만들어 보고 다른 사람의 방법을 살펴보는 것도 좋을것 같거든요. 그렇게 하다보면 순수하게 스스로 작성한 코드가 책과 100% 똑같은 경우도 생길겁니다 ^^

사진이 제 친구랑 비슷해서 항상 한번더 보게되네요 :D

shs0917의 이미지

헉.. 저랑 비슷하게 생긴 사람도 세상에 있나 보군요.. 이제까지
살면서 누구랑 닮았단 소리는 들어본 적이 없는데. 쩝..

컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러

hackexpert의 이미지

위에 sozu님이 적으신 두가지 방법 외에도..
포인터 배열을 사용할 경우 또는 자바 같은 경우

비울때마다 null을 대입해 놓으면..
front==rear 일때
front값이 null이면 empty
null이 아니면 full
이 됩니다.

shs0917의 이미지

저는 환형큐에서는 무조건 한칸을 비워 놓는것 밖에는
생각을 못했는데.. 간단한 방법으로도 다 사용할 수 있는
방법이 있군요.. 왜 이렇게 틀에 박힌 생각만 하는지
부끄럽습니다. :oops:
저는 방금 구현해 봤는데.. full이나 empty나 둘다 체크를
front == rear로 하고 추가할 때는 rear를 1 증가 시키고
full을 체크하고 삭제할 때는 empty를 먼저 체크하고 front를
1증가 시키고 이런 방법을 사용했는데.. 잘 되긴 하네요..
다른 방법으로도 구현해봐야 겠습니다..

컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.