Dequeue 또는 Double Ended Queue는 양쪽 끝에서 삽입 및 삭제를 허용하는 Queue 데이터 구조의 일반화된 버전입니다.
dequeue의 몇 가지 기본 작업은 다음과 같습니다. -
insert_at_beg() : Dequeue의 맨 앞에 항목을 삽입합니다.
insert_at_end() : Dequeue의 뒤쪽에 항목을 삽입합니다.
delete_fr_beg() : Dequeue 앞에서 항목을 삭제합니다.
delete_fr_rear() : Dequeue의 뒤쪽에서 항목을 삭제합니다.
다음은 Dequeue를 구현하는 C++ 프로그램입니다.
알고리즘
Begin 앞쪽 f와 뒤쪽 r을 선언하기 위해 dequeue 클래스를 선언하고 다음 기능을 수행합니다. 앞쪽에 항목을 삽입하는 function insert_at_beg(int):큐가 완전히 채워지지 않으면 앞쪽에 요소를 삽입하고 앞쪽과 뒤쪽을 업데이트합니다. 그렇지 않으면 인쇄 과다. 뒤에 항목을 삽입하는 함수 insert_at_end(int):대기열이 완전히 채워지지 않으면 뒤쪽에 요소를 삽입하고 앞과 뒤를 업데이트합니다. 그렇지 않으면 오버플로를 인쇄합니다. 전면에서 항목을 삭제하는 함수 delete_fr_beg():대기열이 비어 있으면 언더플로를 인쇄하고 그렇지 않으면 전면 요소를 삭제하고 전면을 업데이트합니다. 끝에서 항목을 삭제하는 함수 delete_fr_end():대기열이 비어 있으면 언더플로를 인쇄하고 그렇지 않으면 후면 요소를 삭제하고 후면을 업데이트합니다.End
예시 코드
#include네임스페이스 std 사용;#define SIZE 10class dequeue { int a[20],f,r; 공개:dequeue(); 무효 insert_at_beg(int); 무효 insert_at_end(int); 무효 delete_fr_front(); 무효 delete_fr_rear(); 무효 show();};dequeue::dequeue() { f=-1; r=-1;}void dequeue::insert_at_end(int i) { if(r>=SIZE-1) { cout<<"\n 삽입이 불가능합니다. 오버플로!!!!"; } else { if(f==-1) { f++; r++; } 그렇지 않으면 { r=r+1; } a[r]=i; cout<<"\n삽입된 항목은"<>c; switch(c) { 경우 1:cout<<"삽입할 요소를 입력하십시오"; 신>>나; d.insert_at_beg(i); 부서지다; 경우 2:cout<<"삽입할 요소를 입력하십시오"; 신>>나; d.insert_at_end(i); 부서지다; 사례 3:d.show(); 부서지다; 사례 4:d.delete_fr_front(); 부서지다; 사례 5:d.delete_fr_rear(); 부서지다; 사례 6:exit(1); 부서지다; 기본값:cout<<"잘못된 선택"; 부서지다; } } 동안(c!=7);}
출력
1.시작에 삽입2.끝3.show4.앞에서 삭제5.뒤6.exitenter에서 삭제 선택:4삭제는 불가능합니다::대기열이 비어 있습니다1.시작에서 삽입2.끝에서 삽입3.show4.앞에서 삭제5 .뒤에서 삭제6.선택한 항목을 종료합니다:5삭제가 불가능합니다::대기열이 비어 있습니다1.처음에 삽입2.끝에 삽입3.표시4.앞에서 삭제5.후면에서 삭제6.선택 항목:1삽입할 요소를 입력7삽입된 요소는 다음과 같습니다. 71.시작 부분에 삽입2.끝 부분에 삽입3.show4.앞부분에서 삭제5.뒤부분에서 삭제6.exitenter 선택:1삽입할 요소를 입력하세요6삽입이 불가능합니다. 넘침!!!1.시작 부분에 삽입2.끝부분에 삽입3.show4. 전면에서 삭제5.후면에서 삭제6.선택한 항목에서 삭제:1삽입할 요소를 입력4삽입할 수 없습니다. 오버플로!!!1.시작 부분에 삽입2.끝 부분에 삽입3.show4.앞면에서 삭제5.후면에서 삭제6.선택 항목을 입력합니다. 2삽입할 요소를 입력6Inserted item is61.insert at begin ning2.끝에서 삽입3.show4.앞에서 삭제5.뒤에서 삭제6.선택한 종료:2삽입할 요소를 입력4삽입된 항목은41.시작에서 삽입2.끝에서 삽입3.show4.앞에서 삭제5.뒤에서 삭제6.종료 선택 :37 6 41.시작에 삽입2.끝에 삽입3.show4.앞에서 삭제5.뒤에서 삭제6.exitenter 선택:4삭제된 요소는:71.시작에 삽입2.끝에 삽입3.show4.앞에서 삭제5.에서 삭제 후방6.선택사항 종료:5삭제된 요소는:41.시작에 삽입2.끝에 삽입3.표시4.앞에서 삭제5.후방에서 삭제6.선택사항 종료:1삽입할 요소를 입력7삽입된 요소는:71.시작에 삽입2. 끝부분에서 삽입