【数据结构】链式栈的操作

前端之家收集整理的这篇文章主要介绍了【数据结构】链式栈的操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. #include <stdio.h>
  2. #include <malloc.h>
  3.  
  4.  
  5. typedef int ElemType;
  6.  
  7. typedef struct LinkStack{
  8. LinkStack *link;
  9. ElemType elem;
  10. }* PLinkStack;
  11.  
  12. void InitStack(PLinkStack L);
  13. PLinkStack Push(PLinkStack L,ElemType i);
  14. PLinkStack Pop(PLinkStack L);
  15. void DestroyStack(PLinkStack L);
  16. bool StackEmpty(PLinkStack L);
  17. ElemType GetTop(PLinkStack L);
  18. void StackTraverse(PLinkStack L);
  19.  
  20. void main()
  21. {
  22. PLinkStack L;
  23.  
  24. L = (PLinkStack)malloc(sizeof(LinkStack));
  25.  
  26. InitStack(L);
  27.  
  28. for (int i = 0; i < 5; i++)
  29. {
  30. L = Push(L,i*2+1);
  31. }
  32.  
  33. StackTraverse(L);
  34.  
  35. L = Pop(L);
  36. StackTraverse(L);
  37.  
  38. if (!StackEmpty(L))
  39. printf("%d\n",GetTop(L));
  40. DestroyStack(L);
  41. }
  42.  
  43. void InitStack(PLinkStack L) // 建立一个空的链式栈
  44. {
  45. L->link = NULL;
  46. }
  47.  
  48.  
  49. PLinkStack Push(PLinkStack L,ElemType i)
  50. {
  51. PLinkStack P;
  52. P = (PLinkStack)malloc(sizeof(LinkStack));
  53.  
  54. if (P == NULL)
  55. {
  56. printf("内存分配失败\n");
  57. return NULL;
  58. }
  59. P->elem = i;
  60. P->link = L;
  61. L = P;
  62.  
  63. return L;
  64. }
  65.  
  66.  
  67. PLinkStack Pop(PLinkStack L)
  68. {
  69. PLinkStack P = L;
  70. L = L->link;
  71. free(P);
  72. return L;
  73. }
  74.  
  75.  
  76. void DestroyStack(PLinkStack L)
  77. {
  78. if (L != NULL)
  79. {
  80. L->link = NULL;
  81. free(L);
  82. }
  83. }
  84.  
  85. bool StackEmpty(PLinkStack L)
  86. {
  87. return (L==NULL && L->link == NULL); // true 为空; false 不为空
  88. }
  89.  
  90.  
  91. ElemType GetTop(PLinkStack L)
  92. {
  93. return L->elem;
  94. }
  95.  
  96.  
  97. void StackTraverse(PLinkStack L)
  98. {
  99. PLinkStack P = L;
  100.  
  101. while (P->link != NULL)
  102. {
  103. printf("%d\t",P->elem);
  104. P = P->link;
  105. }
  106.  
  107. printf("\n");
  108. }

猜你在找的数据结构相关文章