...请问:为什么栈抽象数据类型定义中,是InitStack(&s),而代码中是...
发布网友
发布时间:2024-08-18 14:44
我来回答
共2个回答
热心网友
时间:2024-08-21 21:06
因为定义函数时的&表示参数是引用类型的,而调用函数时为引用类型的形参传递实参时,只需要传递变量名,前面不需要加&。如:
//定义
initStack(Stack &s)
{
//...
}
Stack s;
//调用
initStack(s);
热心网友
时间:2024-08-21 21:04
你好,这个就是传值和传址的区别啊。c语言里面讲了它们二者的区别。
你可以去复习一下它们的区别
简单的来说,传值不会改变变量的内容,比如StackEmpty(s)中,仅仅是对栈进行是否为空的判断,并不需要对Stack进行任何操作吧(如修改栈的大小,向栈中插入元素等)所以直接采用传值。
而InitStack(&s)中,对栈进行了操作(给栈分配了内存),类似的还有PopStack(&s),PushStac(&s),都对栈操作了,所以必须采用传址方式,相当于保存了操作的结果,如果采用传值方式,就没有“保存”操作结果,相当于没有进行对栈的操作
数据结构ADT是什么
抽象数据类型的缩写 abstract data type 。表示数据结构的抽象模型。数据结构是一个数据概念的定义,通过各种工具对数据结构的概念类型的描述称之为抽象数据类型,简单地说是指一个数学模型以及定义在该模型上的一组操作。ADT包括数据数据元素,数据关系以及相关的操作。即ADT { 数据对象:(数据元素集合)...
算术表达式求值 急求
};//顺序栈结构模板 template <typename T1,typename T2> Status InitStack(T1 &S){ S.base=(T2 *)malloc(STACK_INIT_SIZE*sizeof(T2));if(!S.base) exit (overflow);S.top=S.base;S.stacksize=STACK_INIT_SIZE;return ok;}//初始化栈函数模板 template <typename T1,typename T2> Sta...
关于c语言数据结构的头文件和Elemtype类的一些问题
这是比较常用到的头文件 2.typedef struct{ SElemtype *base;SElemtype *top int stacksize;}SqStack;以上为声明一个结构体,并用SqStack作为这个结构体名,结构体即为我们自己定义的数据类型。其中selemtype也是一个自定义的结构体名,具体代表什么还要看具体的代码。for(p=str;*p;p++)估计是写错了...