[問題] 資料結構新手問題

看板C_and_CPP作者 (芭樂丸子~)時間14年前 (2012/01/10 01:25), 編輯推噓1(106)
留言7則, 4人參與, 最新討論串1/1
非常低階的問題@@ 可是我還是想不透... -- 資料結構中的環狀柱列的 加入元素到佇列 void addq(element item) { rear=(rear+1)% MAX_QUEUE_SIZE; if(front==rear) queueFull(); queue[rear]=item; } 如果照這樣寫的話 當rear=(rear+1)% MAX_QUEUE_SIZE;被執行之後 如果if內的條件成立 那rear不就被多加一了嗎? 為什麼不再queueFull();後面加一句rear--;呢? 每個教科書都沒有寫要加一句rear--; 那豈不是之後rear所在的位置都沒有值了? (可能是問題太過低階了 所以版上和網路上都搜尋不到...) 感謝大大的解惑... ------ 補上LPH大大要求附上的dequeue element deleteq() { element item; if(front==rear) return queueEmpty(); front = (front+1) % MAX_QUEUE_SIZE; return queue[front]; } 教科書上有說是要分出全空和全滿的佇列 但是這麼一來rear的位置不就跑掉了@@? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.205.243

01/10 01:31, , 1F
正是如此 其理由則是你必須分出全滿和全空的佇列
01/10 01:31, 1F

01/10 01:32, , 2F
唔 我好像弄錯什麼了...你應該是對的
01/10 01:32, 2F

01/10 01:34, , 3F
你把 dequeue 也放上來好了 因為它們是一對的要一起看
01/10 01:34, 3F
※ 編輯: joejoejoe 來自: 140.115.205.243 (01/10 01:39) ※ 編輯: joejoejoe 來自: 140.115.205.243 (01/10 01:42)

01/10 01:59, , 4F
queueFull() 不做事的話, 就糟了
01/10 01:59, 4F

01/10 02:25, , 5F
喔我懂了!! 所以要把rear--;放到queueFull()囉~!
01/10 02:25, 5F

01/10 03:16, , 6F
感謝版上兩位大大
01/10 03:16, 6F

01/10 10:39, , 7F
queueFull()可以再配空間,這樣就可以繼續放值……
01/10 10:39, 7F
文章代碼(AID): #1F2oCGOH (C_and_CPP)