数据结构 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 }
有不懂的可以留言,如果这篇文章对你有帮助,请帮忙给个赞!!!!

浙公网安备 33010602011771号