定义栈的结构体:首先,我们需要定义一个结构体来表示栈,它通常包含一个数组和一个指向栈顶的指针。 分配内存:在initstack函数中,我们需要为栈的数组分配足够的内存空间。这可以通过malloc函数实现。 初始化栈顶指针:分配内存后,我们需要将栈顶指针初始化为-1,表示栈为空。 返回初始化后的栈:最后,initstack函数返回...
根据题意,设 InitStack(Q) 表示对 Q 栈进行初始化操作,Push(Q,e) 表示将元素 e 入栈,Pop(Q,e) 表示将栈顶元素弹出并保存到变量 e 中。下面分析各个操作的含义: InitStack(Q):对栈 Q 进行初始化操作,也就是创建一个空栈[3]。 Push(Q,x):将元素 x 入栈,即将元素 x 放在栈顶位置。 Push(Q...
只要和它的参数类型以及个数对应就行 &代表取地址,如果你的参数是个指针类型 并且要传一个普通类型变量,那么就会用到& &n是指n的地址指针。这要看initstack()原函数是怎么定义的 。
这样改改 #include #include #include #define Stack_size 50typedef struct{int data[Stack_size] ;int top;} Stack ;//初始化函数int InitStack (Stack ** pstack){ *pstack=NULL; *pstack=(Stack *)malloc(sizeof(Stack)); if(*pstack==NULL)
InitStack(s); intx; do{ scanf("%d ",&x); Push(s,x); }while(x!=0); sum=0; while(!StackEmpty(s)){ Pop(s,x); sum+=x; printf("%d",sum); } DestoryStack(s); } 相关知识点: 试题来源: 解析 以上程序的功能是从用户输入的一系列整数中计算它们的和,并将每一步计算结果输出。
int InitStack(SqStack *S); //构造空栈 int StackEmpty(SqStack *S);//判断栈空 int Push(SqStack *S,ElemType e);//入栈 int Pop(SqStack *S,ElemType *e);//出栈 函数conversion实现十进制数转换为八进制数,请将函数补充完整。 void conversion(){ SqStack *S,s; S=&s; InitStack(S); scanf...
经过以下栈运算后,x的值是 . initStack(s);push(s,a);push(s,b);pop(s,x);getTop(s,x);A.aB.bC.1D.0
在使用status之前,有类型定义 typedef int status;也就是说status实际上就是整型,只是使用标记status可读性好,一看就知道是个状态,用于表示函数的状态。一般来讲,还会有以下这些宏定义:define OK 1 define ERROR 0 define OVERFOLW -1 等等,用于表示函数的返回状态。例如:Status InitStack (Sq...
LiStack &s 那个s是指针的引用 因为 在函数中会改变指针的指向 为了防止返回后main函数中 s的指针在调用函数中被改变指向以至于丢失地址的情况 所以使用了指向同一指针别名 你也可以使用 指针的指针
简述以下算法的功能(栈和队列的元素类型均为int)。 void Chang(SqQueue &Q) { SqStack S; int d; InitStack(S); while ( !QueueEmpty(Q) ) { DeQueue (Q, d); Push(S, d); } while( !StackEmpty(S) ) { Pop(S, d); EnQueue (Q, d);...