int Pop(sqstack *s,int e) { if(s->top==s->base) return 0; e=*--s->top; return e;
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/14 05:51:51
int Pop(sqstack *s,int e) { if(s->top==s->base) return 0; e=*--s->top; return e;
int Pop(sqstack *s,int e) { if(s->top==s->base) return 0; e=*--s->top; return e;
int Pop(sqstack *s,int e) { if(s->top==s->base) return 0; e=*--s->top; return e;
pop就是出栈的操作,参数1是栈顶指针,参数2是整型,是用来暂时存储原来栈顶的元素,开始我也觉得不需要用到这个参数,但是想了想,确实需要一个暂时存储的变量,因为出栈的操作分两步,第一步,将栈顶指针地址减一,第二步,将原栈顶元素返回,但是如果你先讲地址减一,则无法获得原栈顶元素的数据,如果先返回,则不能将地址减一,这就是暂存变量的作用.
不过可以修改下,就是在函数内部定义一个整型变量e来暂存,这样不用传一个无用的参数e了.
int Pop(sqstack *s,int e) { if(s->top==s->base) return 0; e=*--s->top; return e;
一道数据结构题:#include #include #define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OK 1#define ERROR 0typedef struct{int *base;int *top;int stacksize;}SqStack;int InitStack(SqStack *S){S->base=(int *)malloc(STACK_INIT_SIZE*sizeof(i
s.top = s.base + s.stacksize;之前是指针,到最后是怎么完成相加的?typedef struct sqstack{ int *base; int *top; int stacksize;}sqstack;sqstack s;之前是指针,到最后是怎么完成相加的?
进制转换#includestdio.h#define Max 50typedef struct{ int elem[Max]; int top;}Sqstack;void initstack(Sqstack*p){ (*p).top=-1;}int empty(Sqstack s){ if(s.top==-1) return 1; else ruturn 0;}void push(Sqstack*p,int x){ 如栈满,输入错误信息
其中的if(S.top-S.base >S.stacksize)是什么意思啊?int Push(SqStack &S,SElemType e) //Push() subfunction { //Push element to SqStack if(S.top-S.base >S.stacksize) //Stack == full?{ S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT*
数据结构中sqstack(&s)和sqstack(s)有什么区别
C语言里if((i=!i)!void f31 (stack *S){Queue Q;Stack T;int i=0;InitQueue(&Q);InitStack(&T);While(!StackEmpty(S))if((i=!i)!=0) Push(&T,Pop(S));else EnQueue(&Q,Pop(S));.其中i指什么?书上说是S元素出栈,奇数入栈T,偶数入队Q,谢谢你
if((i=!i)!void f31 (stack *S){Queue Q;Stack T;int i=0;InitQueue(&Q);InitStack(&T);While(!StackEmpty(S))if((i=!i)!=0) Push(&T,Pop(S));else EnQueue(&Q,Pop(S));.书上说是S元素出栈,奇数入栈T,偶数入队Q,
一般算术表达式转化为逆波兰式#include#include#define SM 100typedef struct {char data[SM];int top;}Sqstack;void main(){Sqstack *sq;sq->top=0;int i=0,t=0;char ch,str[100],exp[100];printf(输入表达式(以#结尾):);do {scanf(%c
Pop_SqStack(&S,&k); /*回溯寻求下一个解*/ k怎么变化?#include#include #define MAXSIZE 100 /*最多元素数*/ typedef int ElemType; typedef struct{ ElemType data[MAXSIZE]; /*栈空间*/ int top; /*栈顶指针*/ }SqStack; void Init_SqStack(
括号匹配问题,出错在哪!#include#include#include#define OK 1#define ERROR -1#define OVERFLOW -2typedef struct{char *base;char *top;char stacksize;}SqStack;int InitStack(SqStack &s){s.base=(char *)malloc(100*sizeof(char));if(!s.base)exit(OVERF
出栈函数如下:Status Pop(SqStack &S,SElemType &e){if (S.top==S.base)return ERROR;e=*--S.top;return OK;}为什么是e=*--S.top; 而不是e=*S.top; e=*--S.top不就是取顶元素的下面那个元素么?有点混
int f() { static int i=0; int s=1; s+=i; i++; return s; }main() { int i,a=0; for(i=0;i
f(int b[ ],int m,int n) {int i,s=0; for (i=m;i
m=(int)(s[i]-'a')是什么意思
int i=1,s=1; for(;s+i
void fun(char *s[],int n) { char *t;int i,j for(i=0;i
求下列程序算法的功能,希望尽量多给代码注释一下,多给点解释谢了bool function(char* rs){if(!rs || !rs[0])return false;int nLen = strlen(rs);//获得rs的长度SqStack S;InitStack(S, nLen);bool ret = true;for(char *p = str; p