我尝试制作一个包含指向其他类型结构(Prof或Stud)的指针(意思是地址)的堆栈。但我似乎无法管理它。错误是无限的。这里是代码:包含指向其他结构的堆栈
struct MyStack
{
int head;
void **stack;
int size;
};
struct stud
{
char flag;
char fname[50];
int semester;
};
struct prof
{
char flag;
char fname[50];
char course[30];
};
int InitStack(int size,struct MyStack *stack);
int InitStack(int size,struct MyStack *stack)
{
stack->size = size;
*stack->stack=(int *) malloc(size*sizeof(int)); //Is this RIGHT?
stack->head=-1;
return 0;
}
int main()
{
int size,sel;
size = GiveSize();
struct MyStack NewStack;
InitStack(size,&NewStack);
do{
sel=Menu();
Select(sel,NewStack.head,&NewStack);
}while (sel!=0);
return 0;
}
我如何能将指针(指向钉和指导)到堆栈?
继承人的代码:
int CreateStud(struct MyStack *stack,char *name,int sem,int *head,int n)
{
struct stud newStud;
int thead=*head;
newStud.flag='s';
strcpy(newStud.fname,name);
newStud.semester=sem;
Push(stack,&thead,&newStud,n);
*head=thead;
return 0;
}
int Push(struct MyStack *stack,int *head, void *elem,int n)
{
if(*head>=n-1)
return 0;
stack->stack[++*head]=elem;
return 1;
}
不要担心“错误是无限的”,通常一个小错误可能会导致编译器生成一个在第一个错误之后复合的错误负载。 – CatsLoveJazz
请显示错误。 – OldProgrammer
我修正了errors.actually程序崩溃现在 – CosmaOne