You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
1.7 KiB

  1. /**
  2. * Datei: pointStack.c
  3. * Funktionen vom Stack Programm
  4. *
  5. * Rainer Hihn
  6. */
  7. #include "pointStack.h"
  8. /**
  9. * globale Variable, die auf das
  10. * oberste Element des Stacks zeigt
  11. */
  12. STACK_POINT_PTR stackTop = NULL;
  13. void push(POINT pushPoint)
  14. {
  15. /**
  16. * temporaere Variable
  17. */
  18. STACK_POINT_PTR stackPoint = (STACK_POINT_PTR) malloc(sizeof(STACK_POINT));
  19. /**
  20. * debugging
  21. * printf("%d \n", stackPoint);
  22. */
  23. /**
  24. * Abbruchbedingung, falls zu wenig Speicher zur Verfuegung steht
  25. */
  26. if(stackPoint == NULL)
  27. {
  28. printf("nicht genug Speicher zur Verfuegung ... Ende \n");
  29. exit(1);
  30. }
  31. /*
  32. * Punnkt speichern und
  33. * stackTop auf den aktuellen Wert setzen
  34. */
  35. stackPoint->p = pushPoint;
  36. stackPoint->next = stackTop;
  37. stackTop = stackPoint;
  38. return;
  39. }
  40. POINT pop()
  41. {
  42. /**
  43. * stackTop und nextStackTop
  44. * zwischenspeichern
  45. */
  46. STACK_POINT firstStackPoint = *stackTop;
  47. /**
  48. * Speicher vom obersten
  49. * Stack-Element freigeben
  50. */
  51. /**
  52. * debugging
  53. * printf("%d \n", stackTop);
  54. */
  55. free(stackTop);
  56. /**
  57. * stackTop auf das ehemals
  58. * zweite Element des Stacks setzen
  59. */
  60. stackTop = firstStackPoint.next;
  61. /**
  62. * Punkte vom ehemals ersten Element
  63. * zurueckgeben
  64. */
  65. return firstStackPoint.p;
  66. }
  67. int isEmpty()
  68. {
  69. /**
  70. * wenn next auf NULL zeigt
  71. * dann ist dies das letzte Element
  72. * des Stacks
  73. * und es wird '1' zurueckgegeben
  74. */
  75. if(stackTop == NULL)
  76. {
  77. return 1;
  78. }
  79. else {
  80. return 0;
  81. }
  82. }
  83. void printStackElement(POINT aPoint)
  84. {
  85. printf("Punkt x: %f, Punkt y: %f, Punkt z: %f \n", aPoint.rX, aPoint.rY, aPoint.rZ);
  86. return;
  87. }