简单的栈的练习用堆栈实现倒序打印

      堆栈与数组不同之处在于,数组可以按下标随机访问,这次访问a[5]下次可以访问a[1],但是堆栈的访问规则被限制为Push和Pop两种操作,Push(入栈或压栈)向栈顶添加元素,Pop(出栈或弹出)则取出当前栈顶的元素,也就是说,只能访问栈顶元素而不能访问栈中其它元素。如果所有元素的类型相同,堆栈的存储也可以用数组来实现,访问操作可以通过函数接口提供。

 1 
 2 
 3 char stack[26];
 4 /* = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}*/
 5 
 6 int top = 0 ;
 7 
 8 bool Push(char t)
 9 {
10     if(top < sizeof(stack)/sizeof(char))
11     {
12         stack[top] = t;
13         top++;
14         return true;
15     }
16     printf("\n%d\n",top);
17     return false;
18 }
19 
20 char Pop()
21 {
22     if( top > 0 && top <= sizeof(stack)/sizeof(char+ 1 )
23     {
24         char tmp = stack[--top];
25         printf("\n%c\n",tmp);
26         return tmp;
27     }
28     else
29     {
30         return  NULL;
31     }
32 }
33 
34 int main(int argc, _TCHAR* argv[])
35 {
36     int i = 97/*依稀记得 a 的 Ascii编码值为 97.*/
37     
38     while(Push((char)i++));
39 /*上一句相当于    stack[26]='a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}*/    
40 
41     while(Pop());
42 
43     getchar();
44 
45     return 0;

46 }      

      OK!


                                                                        2009-7-5  11:59
原文地址:https://www.cnblogs.com/ToDoToTry/p/1517376.html