제5 장 Cach é 알고리즘 과 데이터 구조 대기 열 원리
3028 단어 Caché알고리즘 과 데이터 구조
제5 장 Cach é 알고리즘 과 데이터 구조 대기 열 원리
대열
대기 열 은 선형 데이터 구조 로 스 택 의 선 입 후 출 과 달리 대기 열 에 있 는 요 소 는 먼저 들 어 갈 수 밖 에 없습니다.대열 의 출구 끝 을 맞은편 이 라 고 하고 대열 의 입구 끝 을 대열 의 끝 이 라 고 한다.
데이터 구현
적수
대열 의 후미
1
3
4
5
6
9
링크 구현
적수
대열 의 후미
1
3
4
5
6
9
null
대열 에 들어가다
입 대 는 새로운 요 소 를 대열 에 넣 는 것 입 니 다. 팀 의 끝 에 만 요 소 를 넣 을 수 있 습 니 다. 새로운 요소 의 다음 위 치 는 팀 의 끝 이 됩 니 다.예 를 들 어
7
입단.적수
대열 의 후미
1
3
4
5
6
7
9
대열 에 나가다
출 대 작업 은 요 소 를 대열 에서 옮 기 는 것 입 니 다. 머리 쪽 에서 만 요 소 를 제거 할 수 있 습 니 다. 출 대 요소 후의 요 소 는 새로운 열 머리 가 될 것 입 니 다.예 를 들 어
3
팀 을 나 간다.적수
대열 의 후미
1
4
5
6
7
9
링크 대기 열 구체 적 실현
노드 클래스
Class PHA.YX.Arithmetic.LinkedQueue.Node Extends %RegisteredObject
{
Property next As PHA.YX.Arithmetic.LinkedQueue.Node;
Property element;
Method %OnNew(next As PHA.YX.Arithmetic.LinkedQueue.Node, element) As %Status [ Private, ServerOnly = 1 ]
{
s $this.next = next
s $this.element = element
Quit $$$OK
}
Method getNext() As PHA.YX.Arithmetic.LinkedQueue.Node
{
q ..next
}
Method setNext(next As PHA.YX.Arithmetic.LinkedQueue.Node)
{
s $this.next = next
}
Method getElement() As PHA.YX.Arithmetic.LinkedQueue.Node
{
q ..element
}
Method setElement(element)
{
s $this.element = element
}
}
링크 큐 클래스
Class PHA.YX.Arithmetic.LinkedQueue Extends %RegisteredObject
{
Property front As PHA.YX.Arithmetic.LinkedQueue.Node;
Property rail As PHA.YX.Arithmetic.LinkedQueue.Node;
Property size As %Integer [ InitialExpression = 0 ];
Method isEmpty() As %Boolean
{
q $s(..size = 0 : $$$YES, 1 : $$$NO)
}
Method addQueue(ele)
{
i ..size = 0 d
.s ..front = ##class(PHA.YX.Arithmetic.LinkedQueue.Node).%New("",ele)
.s ..rail = ..front
.s ..size = ..size + 1
e d
.s s = ##class(PHA.YX.Arithmetic.LinkedQueue.Node).%New("",ele)
.d ..rail.setNext(s)
.s ..rail = s
.s ..size = ..size + 1
}
Method deleteQueue()
{
i ..isEmpty() d
.throw ##class(PHA.COM.MOB.Exception).%New(" !")
s ele = ..front.getElement()
s ..front = ..front.next
s ..size = ..size - 1
q ele
}
}
호출
/// w ##class(PHA.YX.Arithmetic).LinkedQueue()
ClassMethod LinkedQueue()
{
#dim linkedQueue as PHA.YX.Arithmetic.LinkedQueue = ##class(PHA.YX.Arithmetic.LinkedQueue).%New()
d linkedQueue.addQueue(1)
d linkedQueue.addQueue("a")
d linkedQueue.addQueue(2)
w linkedQueue.deleteQueue(),!
w linkedQueue.deleteQueue(),!
d linkedQueue.addQueue("b")
w linkedQueue.deleteQueue(),!
w linkedQueue.deleteQueue(),!
q ""
}
DHC-APP>w ##class(PHA.YX.Arithmetic).LinkedQueue()
1
a
2
b
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
제1 2 장 Cach é 알고리즘 과 데이터 구조 거품 정렬한 요소 가 오른쪽 인접 요소 보다 작 거나 같 을 때 위 치 는 변 하지 않 습 니 다. 4 차 8 과 9 는 8 대 9 보다 작 아 변 하지 않 았 다. 세 번 째 6 과 8 은 6 대 8 보다 작 아 변 하지 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.