数据结构 c代码4:栈

下面是用c语言实现的一些有关栈的基本操作:

  1 #include<iostream>
  2 using namespace std;
  3 #define OK 1
  4 #define ERROR 0
  5 #define TRUE 1
  6 #define FALSE 0
  7 #define MAXSIZE 20
  8 
  9 /*顺序栈结构*/
 10 typedef struct Sqstack
 11 {
 12     int data[MAXSIZE];
 13     int top;
 14 }Sqstack; 
 15 
 16 /*初始化一个空栈*/
 17 int InitStack(Sqstack *s)
 18 {
 19     s->top = -1;
 20     return OK;
 21 } 
 22 
 23 /*向栈中插入元素*/
 24 int Push(Sqstack *s, int e)
 25 {
 26     if(s->top==MAXSIZE-1)
 27         return ERROR;
 28     s->top++;
 29     s->data[s->top] = e;
 30     return OK;
 31 }
 32 
 33 /*依次从栈中输出元素*/
 34 int PrintStack(Sqstack s)
 35 {
 36     int index = 0;
 37     while(index<=s.top)
 38     {
 39         cout<<s.data[index]<<" ";
 40         index++;
 41     }
 42     return OK;
 43 }
 44 
 45 /*进行弹栈操作,并将栈顶元素存入e中*/
 46 int Pop(Sqstack *s,int *e)
 47 {
 48     if(s->top==-1)
 49         return ERROR;
 50     *e = s->data[s->top];
 51     s->top--;
 52     return OK; 
 53 }
 54 
 55 /*判断栈是否为空*/
 56 int StackEmpty(Sqstack s)
 57 {
 58     if(s.top==-1)
 59         return TRUE;
 60     return FALSE;
 61 }
 62 
 63 /*查看栈顶元素*/
 64 int getTop(Sqstack s,int &e)
 65 {
 66     if(s.top==-1)
 67         return FALSE;
 68     e = s.data[s.top];
 69 }
 70 
 71 /*判断栈的长度*/
 72 int StackLen(Sqstack s)
 73 {
 74     return (s.top + 1);
 75 }
 76   
 77 int Stack_p(Sqstack s)
 78 {
 79     if(s.top==-1)
 80         return ERROR;
 81     while(s.top>=0)
 82     {
 83         cout<<s.data[s.top--]<<" ";
 84     }
 85     cout<<"\n";
 86 }
 87   
 88 /*清空栈*/
 89 int ClearStack(Sqstack *s)
 90 {
 91     s->top = -1;
 92     return OK;
 93 } 
 94 
 95 
 96 int main()
 97 {
 98     Sqstack s;
 99     int j, e;
100     if(InitStack(&s)==OK)
101     {
102         cout<<"创建空栈成功,请继续操作!!!"<<"\n"; 
103     }
104     cout<<"请输入要添加的数据个数:";
105     cin>>j;
106     cout<<"请依次输入要添加的"<<j<<"个数\n";
107     for(int m=1;m<=j;m++)
108     {
109         cin>>e;
110         Push(&s, e);
111     }
112     cout<<"栈中从下到上元素依次为:";
113     PrintStack(s);
114     
115     Pop(&s,&e);
116     cout<<"\n弹栈元素为:"<<e<<"\n";
117     
118     printf("判断栈是否为空(1:空 0:否):%d\n",StackEmpty(s));
119     
120     getTop(s,e);
121     cout<<"栈顶元素为:"<<e<<" 栈的长度为:"<<StackLen(s)<<"\n"; 
122     
123     cout<<"依次从栈的上面向下输出数据:\n";
124     Stack_p( s);
125     
126     ClearStack(&s);
127     printf("清空栈后栈是否为空(1:空 0:否):%d\n",StackEmpty(s));
128     
129     return 0;
130 }

有不懂的可以留言,如果这篇文章对你有帮助,请帮忙给个赞!!!!

posted @ 2021-12-07 10:16  快乐的余开心  阅读(71)  评论(0)    收藏  举报
!--点击火花特效-->