Guest User

Untitled

a guest
Feb 20th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.67 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. // size of dequeue
  5. #define SIZE (12*1024)
  6.  
  7. typedef char * pchar; // pointer to memory
  8.  
  9. int isempty(char *start){
  10.     return *start == 0; // check only first for empty
  11. }
  12.  
  13. int add_left(pchar &start, char _byte){
  14.     (*start)--; // shift LEFT
  15.     *start = _byte; // define _byte to start
  16.     return 1; // ok, there is space
  17. }
  18.  
  19. int add_right(pchar &start, char _byte){
  20.     pchar a = start; // helper pointer to memory
  21.     while (*a!=0) a++; // find RIGHT
  22.     if (a-start >= SIZE) return 0; // dequeue is FULL
  23.     *a = _byte;
  24.     *(a+1) = 0; // make right boundary
  25.     return 1;
  26. }
  27.  
  28. int del_left(pchar &start){
  29.     if (isempty(start)) return 0;
  30.     start++; // Shift right
  31.     return 1; // everithing is ok
  32. }
  33.  
  34. char get_right(pchar &start){
  35.     if (isempty(start)) return 0;
  36.     pchar a = start; // helper pointer to memory
  37.     while (*(a+1)!=0) a++; // find RIGHT
  38.     return *a;
  39. }
  40.  
  41. int main(){
  42.     pchar start = new char[SIZE];
  43.     *start = 0; // make first element 0, make deque empty
  44.  
  45.     cout<<"isempty:   "<<isempty(start)<<endl;
  46.                      //3
  47.     add_left(start, 51); cout<<"  add_left\n";
  48.    
  49.     cout<<"isempty:   "<<isempty(start)<<endl;
  50.  
  51.     cout<<"get_right: "<<get_right(start)<<endl;
  52.  
  53.     add_right(start, 98); cout<<"  add_right\n";
  54.  
  55.     cout<<"get_right: "<<get_right(start)<<endl;
  56.  
  57.     add_right(start, 100); cout<<"  add_right\n";
  58.  
  59.     cout<<"get_right: "<<get_right(start)<<endl;
  60.  
  61.     del_left(start); cout<<"  del_left\n";
  62.  
  63.     cout<<"isempty:   "<<isempty(start)<<endl;
  64.  
  65.     del_left(start); cout<<"  del_left\n";
  66.  
  67.     cout<<"isempty:   "<<isempty(start)<<endl;
  68.  
  69.     del_left(start); cout<<"  del_left\n";
  70.  
  71.     cout<<"isempty:   "<<isempty(start)<<endl;
  72.  
  73.     return 0;
  74. }
Add Comment
Please, Sign In to add comment