数据结构栈用C语言表示 有几点问题 求教

                                         本人有点关于数据结构的几个问题:请大家指教:::

   栈(听说是最好写的一个程序)不过还是错误百出!!! 

   一开始写栈时,错误老多,改了好几次终于改好了,不过还是有点不懂的地方:

   一个栈的程序 《1》《2》《3》处不懂 程序中已表明    程序代码如下:

1 #include<stdio.h>
2 #include<stdlib.h>
3  #define SIZE 5
4
5 typedef struct {
6 int data[SIZE];
7 int top;
8 }snode;
9 snode *s;
10
11 void initstack(snode *&s)//加 ‘* ’? 《1》
12 {
13 s=(snode *)malloc(sizeof(SIZE));
14 s->top=-1;
15 }
16 int empty(snode *&s)// * 必加
17 {
18 if(s->top==-1)
19 return 1;
20 else return 0;
21 }
22
23 int push(snode *&s,int e)
24 {
25 if(s->top==SIZE-1) {printf("栈已满,请重新分配空间\n"); return 0;}//必须家括号,if只执行一句;
26 else
27 {
28 s->top++;
29 s->data[s->top]=e;
30 return 1;
31 }
32 }
33
34 int pop(snode *&s,int &e)
35 {
36 if(s->top==-1) {printf("栈空\n"); return 0;}
37 else {
38 e=s->data[s->top];
39 s->top--;
40 return e;
41 }
42 }
43
44 int gettop(snode *&s,int &e)
45 {
46 if(s->top==-1) {printf("zhan kong"); return 0;}
47 else {
48 e=s->data[s->top];
49 return e;
50 }
51 }
52
53 void menu()
54 {
55 printf("1. 入栈 2.出栈 3.取栈顶元素\n");
56 printf("-----------------------------\n");
57 }
58
59 int main()
60 {
61
62 initstack(s);
63 menu();
64 int i;
65 while(scanf("%d",&i)&& i!=0)
66 {
67 switch(i)
68 {
69 case 1:{
70 printf("入栈\n");
71 int a;
72 scanf("%d",&a);
73 int n;
74 n=push(s,a);
75 if(n==0) {printf("栈满\n"); menu();}//为什会是六个元素?怎么修改? 《2》
76 else menu();
77 } break;
78 case 2:{
79 printf("出栈\n");
80 if(s->top==-1) //为什么会用到s->top,s->top 为什么能直接用? 《3》
81 {
82 printf("栈空 error\n");
83 menu();
84 }
85 else{
86 int e;
87 e=pop(s,e);
88 printf("%d\n",e);
89 menu();
90 }break;
91 }
92 case 3:{
93 printf("取栈顶元素\n");
94 int b;
95 b=gettop(s,b);
96 printf("%d\n",b);
97 menu();
98 }break;
99 }
100 }
101 system("pasue");
102 return 0;
103 }

 
                     《》 *********||||| 问题求教区|||||********《》
                ----------------------------------------------------------------
                         ***《1》《2》《3》处请教大家?
                         ***《1》《2》《3》处请教大家?
                         ***《1》《2》《3》处请教大家?
                         ***《1》《2》《3》处请教大家?
                         ***《1》《2》《3》处请教大家?

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||



posted @ 2011-05-16 18:11  左手心_疼  阅读(545)  评论(4编辑  收藏  举报