#include <stdio.h>
#include <stdlib.h>
#define StackSize 100
typedef struct
{
int data[StackSize];
int top;
}seq;
void init(seq *s)
{
s->top=-1;
}
int push(seq *s,int x)
{
if(s->top==99)
{
printf("栈已满\n");
return 0;
}
else
{
s->top++;
s->data[s->top]=x;
}
return 0;
}
int pop(seq *s)
{
int x;
if(s->top==-1)
{
printf("栈已空\n");
return 0;
}
else
{
x=s->data[s->top];
printf("栈顶元素出栈%d\n",x);
s->top--;
return 0;
}
}
int getop(seq *s)
{
int x;
if(s->top==-1)
{
printf("栈已空\n");
return 0;
}
else
{
x=s->data[s->top];
printf("栈顶元素是%d ",x);
return 0;
}
}
int main(int argc, char *argv[])
{
seq *s=(seq *)malloc(sizeof(seq));//这个很重要
int x;
init(s);
push(s,1);
push(s,3);
push(s,5);
pop(s);
getop(s);
return 0;
}
`头文件:#include <malloc.h> 或 #include <alloc.h> (注意:alloc.h 与 malloc.h 的内容是完全一致的。)
功能:分配长度为num_bytes字节的内存块
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。``
p = (int *) malloc (sizeof(int));
第一、malloc 函数返回的是 void * 类型,如果你写成:p = malloc (sizeof(int)); 则程序无法通过编译,报错:“不能将 void* 赋值给 int * 类型变量e79fa5e98193e4b893e5b19e31333239303934”。所以必须通过 (int *) 来将强制转换。
第二、函数的实参为 sizeof(int) ,用于指明一个整型数据需要的大小。如果你写成:
int* p = (int *) malloc (1);
malloc 也可以达到 new [] 的效果,申请出一段连续的内存,方法无非是指定你所需要内存大小。
比如想分配100个int类型的空间:
int* p = (int *) malloc ( sizeof(int) * 100 ); //分配可以放得下100个整数的内存空间。
这个解释转载自https://zhidao.baidu.com/question/123232367.html
原文写的更详细。
栈的简单操作(入栈,出栈,取栈顶元素)
最新推荐文章于 2024-04-25 10:20:25 发布