Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- // size of dequeue
- #define SIZE (12*1024)
- typedef char * pchar; // pointer to memory
- int isempty(char *start){
- return *start == 0; // check only first for empty
- }
- int add_left(pchar &start, char _byte){
- (*start)--; // shift LEFT
- *start = _byte; // define _byte to start
- return 1; // ok, there is space
- }
- int add_right(pchar &start, char _byte){
- pchar a = start; // helper pointer to memory
- while (*a!=0) a++; // find RIGHT
- if (a-start >= SIZE) return 0; // dequeue is FULL
- *a = _byte;
- *(a+1) = 0; // make right boundary
- return 1;
- }
- int del_left(pchar &start){
- if (isempty(start)) return 0;
- start++; // Shift right
- return 1; // everithing is ok
- }
- char get_right(pchar &start){
- if (isempty(start)) return 0;
- pchar a = start; // helper pointer to memory
- while (*(a+1)!=0) a++; // find RIGHT
- return *a;
- }
- int main(){
- pchar start = new char[SIZE];
- *start = 0; // make first element 0, make deque empty
- cout<<"isempty: "<<isempty(start)<<endl;
- //3
- add_left(start, 51); cout<<" add_left\n";
- cout<<"isempty: "<<isempty(start)<<endl;
- cout<<"get_right: "<<get_right(start)<<endl;
- add_right(start, 98); cout<<" add_right\n";
- cout<<"get_right: "<<get_right(start)<<endl;
- add_right(start, 100); cout<<" add_right\n";
- cout<<"get_right: "<<get_right(start)<<endl;
- del_left(start); cout<<" del_left\n";
- cout<<"isempty: "<<isempty(start)<<endl;
- del_left(start); cout<<" del_left\n";
- cout<<"isempty: "<<isempty(start)<<endl;
- del_left(start); cout<<" del_left\n";
- cout<<"isempty: "<<isempty(start)<<endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment