求帮忙解释下有关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->这个是指向栈的指针
}
都标记好了,请楼主采纳!
#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代码,里面有许多编程语言的源码,免费下载哦。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯