|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
最下面是我的程序里的部分代码, 头文件部分是栈的创建和初始化,我的问题是在main函数里定义栈并且初始化时我可以定义指针类型么?因为初始化函数里InitStack需要传进的是地址,比如:
int main()
{
ElemType c;
sqStack *s1;//这里定义指针
InitStack(s1); // 初始化栈s1, 直接传入指针地址
return 0;
}
源代码里可以编译通过,但是运行时会显示停止运行, 是哪里想不明白呢? 正初学数据结构, 万分感谢!
源代码里的正确代码应该是
int main()
{
ElemType c;
sqStack s1;
InitStack(&s1); // 初始化栈s1,引用s1的地址
return 0;
}
源代码(部分)
#include <stdio.h>
#include <stdlib.h>
typedef char ElemType;
typedef struct
{
ElemType *base;
ElemType *top;
int stackSize;
}sqStack;
// 函数功能:初始化栈
// 参数*s:栈的地址
void InitStack(sqStack *s)
{
s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));
if( !s->base )
{
exit(0);
}
s->top = s->base;
s->stackSize = STACK_INIT_SIZE;
}
int main()
{
ElemType c;
sqStack s1;
InitStack(&s1); // 初始化栈s1
return 0;
}
|
|