Q[n]? ??? ?? ?? - PowerPoint PPT Presentation

1 / 21
About This Presentation
Title:

Q[n]? ??? ?? ??

Description:

Title: 5 Last modified by: Created Date: 5/16/1999 2:20:14 PM Document presentation format: Company: SNU DBLAB – PowerPoint PPT presentation

Number of Views:26
Avg rating:3.0/5.0
Slides: 22
Provided by: ackr
Category:
Tags: circular | queue

less

Transcript and Presenter's Notes

Title: Q[n]? ??? ?? ??


1
?? ?? ??(1)
  • 1?? ??
  • ?? ???? ?? ??? ??
  • Qn? ??? ?? ??
  • ?? ??? ?? ??
  • n ?? ??? ? ?? ?? ?? ?
  • ? ??? ?? front, rear
  • ??? front rear -1 (???)
  • ??? front rear
  • ?? rear n-1

2
?? ?? ??(2)
  • ?? ???(1)

createQ() // ?? ?(q)? ?? qn
front ? -1 // ??? rear ? -1 end
createQ() isEmpty(q) // ?(q)? ????? ??
if (front rear) then return true else
return false end isEmpty() enqueue(q, item)
// ?(q)? ??? ?? if (rearn-1) then
queueFull() // ?(q)? ??? ??? ?? rear ? rear
1 qrear ? item end enqueue()
3
?? ?? ??(3)
  • ?? ???(2)

dequeue(q) // ?(q)?? ??? ???? ??
if (isEmpty(q)) then queueEmpty() // ?(q)? ???
??? ?? else front ? front 1
return qfront end dequeue() delete(q)
// ?(q)?? ??? ?? if (isEmpty(q))
then queueEmpty() // ?(q)? ??? ??? ?? front
? front 1 end delete() peek(q) //
?(q)?? ??? ?? if (isEmpty(q)) then
queueEmpty() // ?(q)? ??? ??? ?? else
return qfront1 end peek()
4
?? ?? ??(4)
  • ?? ??? ???
  • Rearn-1? ??
  • ?????, ??? n?? ??? ?? ??? ??
  • ?? ??? ??? ?? ? ??? ?? ? ??
  • ???? ??? ?? ???? ??, front?rear ???
  • ? ??, ??? ?? ??
  • ??? ?? ??? ??
  • ??? ??? ???? ?
  • ?? ?(circular queue)
  • ?? ??? ??? ?? ?? ?? Qn? ???? ??
  • ?? ?? ??
  • ??? front rear 0 (???)
  • ??? front rear
  • ?? ?? rear? ?? ?????, ? ??? ?? ??
  • ?? rear? ?? ????? ?, rear front
  • (?? front ?? ??? ???, ??? ?? ? ??? ??)

5
?? ?? ??(5)
  • ?? ?? ?? ??
  • 1?? ??? ???? ???? ??
  • mod(modulus) ??? ??
  • ??? ?? ?? rear? ???? ? rear ? (rear1) mod n
  • rear ?? n-1 ??? n? ?? ??, ?? 0?? ????
  • ??? ?? front? ???? ? front ? (front1) mod n
  • rear? ?????, front ?? n-1 ??? 0? ?? ???? ??

front 0 rear 2
(b) 2?? ?? ??
6
?? ?? ??(6)
  • ?? ???? enqueue? dequeue ??

enqueue(q, item) // ?? ?(q)? item? ??
rear ? (rear1) mod n // ?? ?(q) ??? if
(front rear) then queueFull() // ?(q)? ???
??? ?? qrear ? item end enqueue() dequeue(q
) // ?? ?(q)?? ??? ???? ?? if (front
rear) then queueEmpty() // ?(q)? ??? ??? ??
else front ? (front1) mod n // ?? ???
return qfront end dequeue()
7
??? ??? ?? ??(1)
  • ? ADT? ?? ??
  • Java?? ???? interface ???? ?? ??? ?
  • ?? ?? ???? ???? ???? ??
  • Queue interface ??

public interface Queue boolean isEmpty()
// ?? ????? ?? void enqueue(Object x)
// ?? x? ?? Object dequeue() // ???
???? ?? void remove() // ??? ??
Object peek() // ???? ??
8
??? ??? ?? ??(2)
  • ??? ???? ?? ?? ???? ArrayQueue ??? ??(1)

public class ArrayQueue implements Queue
// ??? ??? Queue interface? ??
private int front // ?? ?? ?? private int
rear // ?? ?? ?? private int count // ?? ??
? private int queueSize // ?(??)? ??
private int increment // ??? ?? ?? private
Object itemArray // Java ?? ??? ? ??? ?? ??
public ArrayQueue() // ??? ?
??? front 0 // ??? rear 0
count 0 queueSize 50 // ?? ? ??
increment 10 // ??? ?? ?? itemArray
new ObjectqueueSize public boolean
isEmpty() return (count 0)
9
??? ??? ?? ??(3)
  • ??? ???? ?? ?? ???? ArrayQueue ??? ??(2)

public void enqueue(Object x)
// ?? ?? x? ?? if (count queueSize)
queueFull() itemArrayrear x // ???
?? rear (rear 1) queueSize
count // end enqueue( ) public void
queueFull() // ??? ????
increment?? ?? int oldsize queueSize //
??? ?? ??? ?? queueSize increment //
??? ?? ?? Object tempArray new
ObjectqueueSize //?????????? for (int i
0 i lt count i) // ?? ??? ????
??? ?? tempArrayi
itemArrayfront front (front 1)
oldsize itemArray tempArray //
?? ?? ??? ?? front 0 rear
count // end queueFull()
10
??? ??? ?? ??(4)
  • ??? ???? ?? ?? ???? ArrayQueue ??? ??(3)

public Object dequeue( )// ??? ??? ???? ??
if (isEmpty()) return null // ?? ??? ??
// ?? ??? ?? ?? Object item
itemArrayfront front (front 1)
queueSize count -- return item
//end dequeue() public Object remove( )//
??? ??? ?? if (isEmpty()) return null //
?? ??? ?? // ?? ??? ?? ??
front (front 1) queueSize count
-- //end remove() public Object
peek( ) // ??? ???? ?? if (isEmpty())
return null else return itemArrayfront
// end peek() //end ArrayQueue class
11
6.4 ?? ?? ??(1)
  • ?????? ??? ?
  • ?? ?? ?? ??? ??? ?? ??? ???
  • ?? ?(linked queue)? ??
  • ?? ?? ???? ? ?? ??? ?? front, rear? ??
  • ??? front rear null (???)
  • ?? ?? ?? front ?? rear? null?? ??? ?? ? ? ??

12
?? ?? ??(2)
  • ?? ???? ??, ??, ?? ?? ??(1)

enqueue(q, item) // ?? ?(q)? item? ??
newNode ? getNode() // ??? ??? ??
newNode.data ? item newNode.link ? null
// ???? ??? link ??? ?? null if (rear null)
then // ?(q)? ??? ?? rear ? newNode
front ? newNode else
rear.link ? newNode rear ? newNode
end enqueue() dequeue(q) // ?(q)??
??? ???? ?? ?? if (front null) then
queueEmpty() // ?(q)? ??? ?? else
oldNode ? front item ? front.data
front ? front.link if (front null)
then rear ? null // ??? ?? ?(q)? ??? ? ??
retNode(oldNode) return item
end dequeue()
13
?? ?? ??(3)
  • ?? ???? ??, ??, ?? ?? ??(2)

delete(q) // ?(q)?? ??? ?? if (front
null) then queueEmpty() // ?(q)? ??? ??
else oldNode ? front front ?
front.link if(front null) then rear ?
null // ??? ?? ?(q)? ??? ? ??
retNode(oldNode) end delete() peek(q)
// ?(q)? front ??? ?? if (front null)
then queueEmpty() // ?(q)? ??? ?? else
return (front.data) end peek()
14
?? ?? ??(4)
  • ???? ??
  • ??, ??? ?? ?? ???? ??? ?? ??
  • ??? ???? ??
  • ?? ?? ? ????? ??? ??
  • ?? ??? ???? ???? ?? ?? ??
  • k?? ?? ??
  • ?0, ?1, ?2,
Write a Comment
User Comments (0)
About PowerShow.com