Gistrec

C++ указатели и ссылки

Mar 21st, 2017
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.92 KB | None | 0 0
  1. VERSION 1: Нельзя удалять, т.к. ссылки-ссылки-ссылки
  2. #include "stdafx.h"
  3. #include <stdio.h>
  4.  
  5. struct stack {
  6.     char data;
  7.     stack *next;
  8. };
  9.  
  10. int takeFromStack(stack *now, char *data) {
  11.     *data = now->data;
  12.     stack *del = now;
  13.     if (now->next == NULL) {
  14.         now = NULL;
  15.         //delete del;
  16.         return 0;
  17.     }else {
  18.         *now = *now->next;
  19.         //delete del;
  20.         return 1;
  21.     }
  22. }
  23.  
  24. int main() {
  25.     // create new stack with 3 element's
  26.     stack *top;
  27.     top = new stack;
  28.     top->data = '0';
  29.     top->next = new stack;
  30.     top->next->data = '1';
  31.     top->next->next = NULL;
  32.     top->next->next = new stack;
  33.     top->next->next->data = '2';
  34.     top->next->next->next = NULL;
  35.     // my function
  36.     char data;
  37.     int result;
  38.     result = takeFromStack(top, &data);
  39.     printf("result:%d data:%c\n", result, data);
  40.     result = takeFromStack(top, &data);
  41.     printf("result:%d data:%c\n", result, data);
  42.     result = takeFromStack(top, &data);
  43.     printf("result:%d data:%c\n", result, data);
  44. }
  45. ---------------------------------
  46. VERSION 2:
  47. #include "stdafx.h"
  48. #include <stdio.h>
  49.  
  50. struct stack {
  51.     char data;
  52.     stack *next;
  53. };
  54.  
  55. int takeFromStack(stack** now, char* data) {
  56.     *data = (*now)->data;
  57.     stack *del = *now;
  58.     if ((*now)->next == NULL) {
  59.         now = NULL;
  60.         delete del;
  61.         return 0;
  62.     }else {
  63.         //*now = *(now->next);
  64.         *now = ((*now)->next);
  65.         delete del;
  66.         return 1;
  67.     }
  68. }
  69.  
  70. int main() {
  71.     // create new stack with 3 element's
  72.     stack* top;
  73.     top = new stack;
  74.     top->data = '0';
  75.     top->next = new stack;
  76.     top->next->data = '1';
  77.     top->next->next = NULL;
  78.     top->next->next = new stack;
  79.     top->next->next->data = '2';
  80.     top->next->next->next = NULL;
  81.     // my function
  82.     char data;
  83.     int result;
  84.     result = takeFromStack(&top, &data);
  85.     printf("result:%d data:%c\n", result, data);
  86.     result = takeFromStack(&top, &data);
  87.     printf("result:%d data:%c\n", result, data);
  88.     result = takeFromStack(&top, &data);
  89.     printf("result:%d data:%c\n", result, data);
  90. }
Advertisement
Add Comment
Please, Sign In to add comment