永发信息网

求帮忙解释下有关C的顺序栈的代码

答案:3  悬赏:0  手机版
解决时间 2021-03-07 23:08
  • 提问者网友:回忆在搜索
  • 2021-03-07 09:38
求帮忙解释下有关C的顺序栈的代码
最佳答案
  • 五星知识达人网友:舊物识亽
  • 2021-03-07 09:46
#include               //栈 C语言实现  
#include  
#define STACK_SIZE 100 

typedef int DataType; 
typedef struct 

        DataType data[STACK_SIZE];  //==int data[100]
        int      top; 
}Stack; 
void     Initial(Stack *); 
int      IsEmpty(Stack *); 
int      IsFull (Stack *); 
void     Push   (Stack *, DataType); 
DataType Pop    (Stack *); 
DataType Top    (Stack *); 

int main(void) 

    Stack s,*ps=&s; 
    DataType first, second; 
     
    Initial(ps); //初始化,栈低为-1;
     
    Push(ps, 100); 
    Push(ps, 200); 
    first = Top(ps); 
    Pop(ps); 
    second = Top(ps); 
     
    printf("first=%d, second=%d
",first, second); //输出栈里的元素
     
    int getch(); 
    return 0; 


void Initial(Stack *ps) 

     ps->top = -1; 

     
int IsEmpty(Stack *ps) //若栈空则top为-1

    return (ps->top == -1); 


int IsFull(Stack *ps) //检测栈是否满

    return (ps->top == STACK_SIZE-1); 
}  

void Push(Stack *ps, DataType n) 

     if(IsFull(ps)) //检测栈是否满了
     { 
                   printf("stack overflowed!!
"); 
                   exit(1);  //如果栈满则返回程序控制权给操作系统
     } 
     ps->data[++ps->top] = n; //在第一次执行的时候ps->data[(p->top)++]=n.也就是说因为栈底是-1,自加一的时候是0;数组元素data[0]=n;top=0了


DataType Pop(Stack *ps) //如果栈为空,则返回控制权给操作系统,否则就top自减1,也就表示指向下一个元素

         if(IsEmpty(ps)) 
         { 
                        printf("stack underflowed!!
"); 
                        exit(1);
         } 
         return ps->data[ps->top--]; 


DataType Top(Stack *ps) 

         if(IsEmpty(ps)) //测试栈是否空
         { 
                       printf("stack underflowed!!
"); 
                       exit(1); //空则返回程序控制权给操作系统。结束程序了。
         } 
         return ps->data[ps->top]; //如果栈中还有元素,那么就把栈顶元素第一遍返回赋值给first,第二遍返回给second;ps->data[ps->top],因为top总是存储栈顶的位置所以data[top]也就表示栈顶元素。ps->这个是指向栈的指针
}
都标记好了,请楼主采纳!
全部回答
  • 1楼网友:佘樂
  • 2021-03-07 11:04
看看书 应该没有问题
  • 2楼网友:傲气稳了全场
  • 2021-03-07 10:57
嗯,我只会用易语言,帮不了你,对不起,你百度搜索love代码,里面有许多编程语言的源码,免费下载哦。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯