Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Beginner Web en 26 Septiembre 2018, 04:20 am



Título: Pilas
Publicado por: Beginner Web en 26 Septiembre 2018, 04:20 am
Hola a todos, aqui de nuevo, segun esta definicion de datos no entiendo como seria la implementacion de esta estructura de datos de tipo pila, todas las operaciones de pila con registros, arreglos y listas ya las se emplear, salvo esta estructura en particular, alguien me ayuda?
Código
  1. const int MAX=10;
  2. typedef int contenedor[MAX];
  3. typedef struct tpila{
  4. contenedor datos1;
  5. contenedor datos2;
  6. };//La primera posicion del segundo arreglo se utiliza como cima



Título: Re: Pilas
Publicado por: ThunderCls en 26 Septiembre 2018, 18:05 pm
Lo que muestras no es una implementación es solo una definición de tipo de datos. Por otra parte no se para que querrías usar dos arrays en tu definición de tipo de datos pila. Por ultimo te recomendaría definir una clase en lugar de una estructura. En la web existen miles de códigos de ejemplo
Suerte


Título: Re: Pilas
Publicado por: Beginner Web en 27 Septiembre 2018, 04:31 am
Todavia no llegue a lo que es POO jiji
Esto era lo que tenia que hacer, gracias por corregir mi error no era una implementacion, era una definicion de una estructura de datos  ;-)
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. const int MAX=10;
  7. typedef int contenedor[MAX];
  8. typedef struct tpila{
  9. contenedor datos1;
  10. contenedor datos2;
  11. };
  12. void binario(int n);
  13. void init_stack(tpila &pila);
  14. void push_stack(tpila &pila, int nuevo);
  15. bool full_stack(tpila pila);
  16. bool empty_stack(tpila pila);
  17. int pop_stack(tpila &pila);
  18. int top_stack(tpila pila);
  19.  
  20. int main()
  21. {
  22. binario(12);
  23. cout<<"FIN DEL PROGRAMA"<<endl;
  24. system("pause");
  25. }
  26.  
  27. void binario(int n)
  28. {
  29. tpila pila;
  30. init_stack(pila);
  31. while(n!=0){
  32. push_stack(pila,n%2);
  33. n/=2;
  34. }
  35. cout<<"Binario: ";
  36. while(empty_stack(pila)==false){
  37. cout<<pop_stack(pila);
  38. }
  39. cout<<endl;
  40. }
  41.  
  42. void init_stack(tpila &pila)
  43. {
  44. pila.datos2[0]=-1;
  45. }
  46.  
  47. void push_stack(tpila &pila, int nuevo)
  48. {
  49. if(full_stack(pila)==true){
  50. cout<<"PILAS LLENAS"<<endl;
  51. }
  52. else{
  53. if(pila.datos2[0]<MAX-1){
  54. pila.datos2[0]++;
  55. pila.datos1[pila.datos2[0]]=nuevo;
  56. }
  57. else{
  58. pila.datos2[0]++;
  59. if(pila.datos2[0]=MAX){
  60. pila.datos2[0]++;
  61. }
  62. pila.datos2[pila.datos2[0]-MAX]=nuevo;
  63. }
  64. }
  65. }
  66.  
  67. bool full_stack(tpila pila)
  68. {
  69. return pila.datos2[0]==MAX*2-1;
  70. }
  71. bool empty_stack(tpila pila)
  72. {
  73. return pila.datos2[0]==-1;
  74. }
  75.  
  76. int pop_stack(tpila &pila)
  77. {
  78. int aux;
  79. if(empty_stack(pila)==true){
  80. aux=-1;
  81. }
  82. else{
  83. if(pila.datos2[0]>MAX){
  84. aux=pila.datos2[pila.datos2[0]-MAX];
  85. pila.datos2[0]--;
  86. }
  87. else{
  88. if(pila.datos2[0]==MAX){
  89. pila.datos2[0]--;
  90. }
  91. aux=pila.datos1[pila.datos2[0]];
  92. pila.datos2[0]--;
  93. }
  94. }
  95. return aux;
  96. }
  97.  
  98. int top_stack(tpila pila)
  99. {
  100. int aux;
  101. if(empty_stack(pila)==true){
  102. aux=-1;
  103. }
  104. else{
  105. if(pila.datos2[0]>MAX){
  106. aux=pila.datos2[pila.datos2[0]-MAX];
  107. }
  108. else{
  109. if(pila.datos2[0]==MAX){
  110. pila.datos2[0]--;
  111. }
  112. aux=pila.datos1[pila.datos2[0]];
  113. }
  114. }
  115. return aux;
  116. }
  117.