Advertisement
nullzero

THANKS

Dec 21st, 2012
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstdlib>
  3.  
  4. struct List{
  5.     List *next, *prev;
  6.     int val;
  7. };
  8.  
  9. List *head, *tail;
  10. int stack_size;
  11.  
  12. List* new_node(int val){
  13.     List* tmp = (List*)malloc(sizeof(List));
  14.     tmp->next = NULL;
  15.     tmp->prev = NULL;
  16.     tmp->val = val;
  17.     return tmp;
  18. }
  19.  
  20. bool stack_empty(){
  21.     return stack_size == 0;
  22. }
  23.  
  24. void stack_push(int val){
  25.     ++stack_size;
  26.     if(stack_size == 1){
  27.         head = new_node(val);
  28.         tail = head;
  29.         return;
  30.     }
  31.     tail->next = new_node(val);
  32.     tail->next->prev = tail;
  33.     tail = tail->next;
  34. }
  35.  
  36. void stack_pop(){
  37.     --stack_size;
  38.     if(stack_size == 0){
  39.         free(tail);
  40.         head = tail = NULL;
  41.         return;
  42.     }
  43.     tail = tail->prev;
  44.     free(tail->next);
  45.     tail->next = NULL;
  46. }
  47.  
  48. int stack_top(){
  49.     return tail->val;
  50. }
  51.  
  52. void dec2bin(int num){
  53.     for(int i = 0; i < 8; ++i){
  54.         stack_push(num & 1);
  55.         num >>= 1;
  56.     }
  57.     while(not stack_empty()){
  58.         printf("%d", stack_top());
  59.         stack_pop();
  60.     }
  61. }
  62.  
  63. int main(){
  64.     head = NULL;
  65.     tail = NULL;
  66.     const char* str = "THANKS";
  67.     for(int i = 0; str[i] != 0; ++i){
  68.         dec2bin(str[i]);
  69.         printf(" ");
  70.     }
  71.     printf("\n");
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement