关于堆和栈的综合例子:
void push(int);
int pop();
int *pi,*tos;
main()
{
int v;
pi=(int *)malloc(50*sizeof(int));
if(!pi)
{
printf("allocation failure/n");
exit(0);
}
tos=pi;
do
{
printf("please input value,push it;enter 0 then pop;(enter -1 then stop)/n");
scanf("%d",&v);
if(v!=0) push(v);
else printf("pop this is it %d/n",pop());
}
while(v!=-1);
}
void push(int i)
{
pi++;
if(pi==(tos+50))
{
printf("stack overflow/n");
exit(0);
}
*pi=i;
}
int pop()
{
if(pi==tos)
{
printf("stack underflow/n");
exit(0);
}
pi--;
return *(pi+1);
}
程序分配100字节的堆空间,转换成int型赋给pi,当pi为NULL时,表示没有可用的空间了,则显示allocation failure。输入一个整数,压入栈中,当超过50时,则显示stack overflow.当输入0时,则把栈中的数据弹出。这个程序也演示了栈的后进先出的特点。
void push(int);
int pop();
int *pi,*tos;
main()
{
int v;
pi=(int *)malloc(50*sizeof(int));
if(!pi)
{
printf("allocation failure/n");
exit(0);
}
tos=pi;
do
{
printf("please input value,push it;enter 0 then pop;(enter -1 then stop)/n");
scanf("%d",&v);
if(v!=0) push(v);
else printf("pop this is it %d/n",pop());
}
while(v!=-1);
}
void push(int i)
{
pi++;
if(pi==(tos+50))
{
printf("stack overflow/n");
exit(0);
}
*pi=i;
}
int pop()
{
if(pi==tos)
{
printf("stack underflow/n");
exit(0);
}
pi--;
return *(pi+1);
}
程序分配100字节的堆空间,转换成int型赋给pi,当pi为NULL时,表示没有可用的空间了,则显示allocation failure。输入一个整数,压入栈中,当超过50时,则显示stack overflow.当输入0时,则把栈中的数据弹出。这个程序也演示了栈的后进先出的特点。