Pop函数改成这样:
int Pop (Stack * pstack, int * pname)
{
if(pstack-top=0)
return 0;
}
pstack-top--;
* pname = pstack-data[pstack-top];
return 1;
Push函数改成这样:
int Push (Stack * pstack, int num)
if(pstack-top=Stack_size)
printf("Push Error!");
pstack-data[pstack-top]=num;
pstack-top++;
试试(原来那样当元素达到最大数目时pstack-top就越界了).
#include?stdio.h
#include?stdlib.h
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
int?StackEmpty(Stack?S)
return?(!S.top)?1:0;?/*判断栈是否为空*/
int?Pop(Stack?*S)?/*栈顶元素出栈*/
if(!S-top)?{
printf("Pop?an?empty?stack!\n");
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?))?//------
n=?n-1?;?//--------
}while(n!=0);
while(!StackEmpty(S))?{?/*输出B进制的数*/
m=Pop(S);
if(m10)?printf("%d",m);?/*小于10,输出数字*/
printf("\n");
与它前面的类型SElemType一起把变量e定义为一种引用类型的变量,引用类型是C++相较于C语言新增加的语言特性,具有与指针类似的作用.把一个变量定义为引用类型的方法与定义为指针类型的方法也类似,把*改成就行了.比如:
//全局变量
int n=1;
void f1(int n)
f1(n);
//调用参数为引用类型的函数时,直接传递实参名作参数就行了
关于 pop 函数,我不太确定题主说的是哪个函数,因为 C 语言的标准函数库是没有 pop 这个函数的.如果题主说的是 C++ 的 Stack 类中的 pop 函数的话,它并不是一个缩写,因为从栈中取值的操作就叫做 pop.
然后就是查询单词原型的网站,因为 C 语言好多函数库中的函数名都是按照很奇怪的方法缩写的,所以基本上没有一个专门查全称的网站.不过题主可以参考
这个网站里面虽然没有指出具体的缩写方式,但是能很好地解释 C 语言标准函数库的所有函数的作用.通过它的介绍你应该会对函数的全称有一个大概的理解.比如说这个针对 stdio.h 头文件中所定义函数的解释:
不光是 C 语言,C++ 的标准类库的信息也可以在这个网站中找到.
在函数定义时写int
pop(int
s,
int
e)是说明参数是直接引用的参数
在函数调用时写pop(a,
b);[注意这个不是函数定义,而是调用语句],
以上就是土嘎嘎小编为大家整理的c语言pop函数用法相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!