우리는 Deque를 사용해 매칭 과정의 정보를 저장해야 한다. 이 Deque은 특별한 점이 하나 더 있는데 뒤에서는 삭제가 발생하지 않는다는 점이다.
(참고: 앞 부분과 뒷 부분을+기호로 나눈다.)
동작 규칙 : 검사를 시작할 때 먼저 시작 노드 다음의 값을 Deque의 앞부분에 넣는다. : 그 후Deque.front를 다음과 같은 기준으로 검사한다.
ch[Deque.front]가 존재할 경우 : 해당 문자와 현재 검사하고 있는 문자가 일치할 경우, ->next[Deque.front]를Deque.back에 Enqueue하고 해당 값을 Queue에서 삭제한다. : 해당 문자와 현재 검사하고 있는 문자가 일치하지 않을 경우, ->Deque.front를 삭제한다.
ch[Deque.front]가 존재하지 않을 경우 ->next[Deque.front]를Deque.front에 Enqueue하고 해당 값은 Queue에서 삭제한다.
Deque.front가 존재하지 않을 경우 (Deque.front가+인 경우) -> Deque를 뒤집어 준다. -> 검사하는 문자를 다음 문자로 바꾼다.