当前位置:   article > 正文

带头结点链栈的基本操作-C语言实现_本关要求按照完成链栈数据类型定义,并初始化一个空的链栈。编程要求链数结点

本关要求按照完成链栈数据类型定义,并初始化一个空的链栈。编程要求链数结点
  1. //链栈LinkStack(带头结点)
  2. #include<stdio.h>
  3. #include <stdlib.h>
  4. typedef int ElemType;
  5. typedef struct LNode {
  6. ElemType data; //数据域
  7. struct LNode *next; //指针域
  8. }LNode, *LinkStack; //栈类型定义
  9. //1.初始化顺序栈
  10. void InitStack(LinkStack& s){
  11. // 创建头节点
  12. s=(LinkStack)malloc(sizeof(LNode));
  13. s->next=NULL;
  14. }
  15. //2.判断是否栈空
  16. bool StackEmpty(LinkStack s){
  17. if(s->next==NULL){
  18. return true;
  19. }
  20. return false;
  21. }
  22. //3.x进栈
  23. bool Push(LinkStack& s,ElemType x){
  24. //不必判满,因为链栈没有长度限制,直接创建新结点并赋值
  25. LNode* p=(LNode*) malloc(sizeof(LNode));
  26. p->data=x;
  27. p->next=s->next;
  28. s->next=p;
  29. return true;
  30. }
  31. //4.出栈
  32. bool Pop(LinkStack& s,ElemType& x){
  33. if(s->next==NULL){ //栈判空
  34. return false;
  35. }
  36. x=s->next->data; //给引用类型x赋值栈顶元素data
  37. //删除栈顶结点
  38. LNode *q=s->next; //栈顶元素指针赋值给待删除指针q
  39. s->next=s->next->next;
  40. free(q); //释放q所指向的栈顶元素
  41. return true;
  42. }
  43. //5.读栈顶元素
  44. bool GetTop(LinkStack s,ElemType& y){
  45. if(s->next==NULL){
  46. return false;
  47. }
  48. y=s->next->data;
  49. return true;
  50. }
  51. int main() {
  52. LinkStack s; //s指向头节点,s->next为栈顶指针
  53. //1.初始化一个空栈
  54. InitStack(s);
  55. //2.判断是否栈空
  56. if(StackEmpty(s)){
  57. printf("栈为空!\n");
  58. }else{
  59. printf("栈不为空!\n");
  60. }
  61. //3.x进栈
  62. if(Push(s,1)){
  63. printf("进栈成功!\n");
  64. }else{
  65. printf("进栈失败!\n");
  66. }
  67. if(Push(s,2)){
  68. printf("进栈成功!\n");
  69. }else{
  70. printf("进栈失败!\n");
  71. }
  72. if(Push(s,3)){
  73. printf("进栈成功!\n");
  74. }else{
  75. printf("进栈失败!\n");
  76. }
  77. //4.出栈
  78. int x;
  79. if(Pop(s,x)){
  80. printf("出栈成功!出栈元素为%d\n",x);
  81. }else{
  82. printf("出栈失败!\n");
  83. }
  84. //5.读栈顶元素
  85. int y;
  86. if(GetTop(s,y)){
  87. printf("栈顶元素y为%d\n",y);
  88. }else{
  89. printf("读栈顶元素失败!\n");
  90. }
  91. return 0;
  92. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/789559
推荐阅读
相关标签
  

闽ICP备14008679号