C语言 push和pop函数可以直接用吗?

下面代码中,直接使用了push和pop函数,请问push和pop函数不需要自己定义吗?可以直接调用吗?intPush(Stack*S,intitem)/*将整数item压... 下面代码中,直接使用了push和pop函数,请问push和pop函数不需要自己定义吗?可以直接调用吗?

int Push(Stack *S, int item) /*将整数item压入栈顶*/

int Pop(Stack *S) /*栈顶元素出栈*/

*************************
函数 MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数 n 转换成 B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把 B 进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:
 #define KAXSIZE 32
 typedef struct{
  int *elem;  /* 栈的存储区 */
  int max;   /* 栈的容量,即找中最多能存放的元素个数 */
  int top;   /* 栈顶指针 */
 }Stack;
[C代码]
 #define MAXSIZE 32
typedif struct {
int *elem; /*栈的存储区*/
int max; /*栈的容量,即栈中最多能存放的元素个数*/
int top; /*栈顶指针*/
} Stack;
[C代码]
int InitStack(Stack *S, int n) /*创建容量为n的空栈*/
{
S->elem = (int *)malloc(n * sizeof(int));
if(S->elem==NULL) return –1;
S->max=n;
__(1)__ =0;
return 0;
}
int Push(Stack *S, int item) /*将整数item压入栈顶*/
if(S->top==S->max) {
printf(“Stack is full! \n”);
return –1;
}
__(2)__ = item;
return 0;
}
int StackEmpty(Stack *S)
{
return (!S.top)?1 : 0; /*判断栈是否为空*/
}
int Pop(Stack *S) /*栈顶元素出栈*/
{
if(!S->top) {
printf(“Pop an empty stack!\n”);
return -1;
}
return ___(3)___ ;
}
void MultibaseOutput(long n,int B)
{
int m; Stack S;
if(InitStack(&S,MAXSIZE)){
printf(“Failure!\n”);
return;
}
do {
if (Push(&S,__ (4)__ )) {
printf(“Failure!\n”);
return;
}
n= ___(5)___ ;
}while(n!=0);
while(!StackEmpty(S)) { /*输出B进制的数*/
m=Pop(&S);
if(m<10) printf(“%d”,m); /*小于10,输出数字*/
else printf(“%c”, m+55); /*大于或等于10,输出相应的字符*/
}
printf(“\n”);
}
展开
 我来答
kaixingui2012
2015-09-17 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6301万
展开全部
#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 32
typedef struct{
int *elem;/* 栈的存储区 */
  int max;   /* 栈的容量,即找中最多能存放的元素个数 */
  int top;   /* 栈顶指针 */ 
}Stack;

int InitStack(Stack *S, int n) /*创建容量为n的空栈*/
{
S->elem = (int *)malloc(n * sizeof(int));
if(S->elem==NULL) return -1;
S->max=n;
S->top =0; //栈顶初值0
return 0;
}

int Push(Stack *S, int item) /*将整数item压入栈顶*/
{
if(S->top==S->max) {
printf("Stack is full! \n");
return -1;
}
S->elem[S->top++] = item; //压栈,栈顶加1
return 0;
}
int StackEmpty(Stack S)
{
return (!S.top)?1:0; /*判断栈是否为空*/
}
int Pop(Stack *S) /*栈顶元素出栈*/
{
if(!S->top) {
printf("Pop an empty stack!\n");
return -1;
}
return S->elem[--S->top]  ; //弹出栈,栈顶减1
}

void MultibaseOutput(long n,int B)
{
int m; Stack S;
if(InitStack(&S,MAXSIZE)){
printf("Failure!\n");
return;
}
do {
if (Push(&S,B )) //------
{
printf("Failure!\n");
return;
}
n= n-1 ; //--------
}while(n!=0);
while(!StackEmpty(S)) { /*输出B进制的数*/
m=Pop(&S);
if(m<10) printf("%d",m); /*小于10,输出数字*/
else printf("%c", m+55); /*大于或等于10,输出相应的字符*/
}
printf("\n");
}
追问
感谢啊,完整的代码你都有
追答
调试了半天,耽误了时间。。。
物理公司的
2015-09-17 · TA获得超过5695个赞
知道大有可为答主
回答量:6105
采纳率:86%
帮助的人:1342万
展开全部
自己定义的,如果是有库的话可以用库的函数
追问
那上面的代码为什么可以直接用?
追答
int Push(Stack *S, int item) /*将整数item压入栈顶*/

int Pop(Stack *S) /*栈顶元素出栈*/

//上面的是声明下面的是定义,你代码都提供了

int Pop(Stack *S) /*栈顶元素出栈*/
{
if(!S->top) {
printf(“Pop an empty stack!\n”);
return -1;
}
return ___(3)___ ;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
然后去远足
2015-09-17 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2392万
展开全部
C 中需要自己定义实现。

C++ 中可以使用 STL 栈容器 stack 的 pop() 和 push()。
更多追问追答
追问
那上面的代码为什么可以直接用?
追答

这不是让你补全么?

int Pop(Stack *S) /*栈顶元素出栈*/
{
    if(!S->top) {
        printf(“Pop an empty stack!\n”);
        return -1;
    }
    return ___(3)___ ;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式