主题:另一个关于初始化栈的问题
//以下是初始化栈的程序,但是有一个缺点,就是不能随机输入元素,必须要把栈填
//满才能结束,请教 能不能设计一个算法,或设一个标记来退出输入循环,从而达到
//随机输入N个元素
#include<stdio.h>
#include<malloc.h>
#define STACK_INIT_SIZE 100
typedef struct{
int *top;
int *base;
int stacksize;
}SqStack;
void initstack(SqStack& S);
void check(SqStack S);
int main()
{
SqStack S;
printf("输入要创建的栈的元素:");
initstack(S);
printf("你创建的栈为:");
check(S);
system("pause");
return 0;
}
void initstack(SqStack& S)
//初始化栈
{
int *p;
int i;
S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
//在这里如果用STACK_INIT_SIZE会出错,如果改成具体数字则能成功运行
if(!S.base) exit(0);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
p=S.base;
for(i=0;i<S.stacksize;i++)
{
scanf("%d",p++);
S.top++;
}
}
void check(SqStack S)
//用于回显栈中元素
{
int *p;
for(p=S.base;p<S.top;p++)
printf("%d ",*p);
}
//满才能结束,请教 能不能设计一个算法,或设一个标记来退出输入循环,从而达到
//随机输入N个元素
#include<stdio.h>
#include<malloc.h>
#define STACK_INIT_SIZE 100
typedef struct{
int *top;
int *base;
int stacksize;
}SqStack;
void initstack(SqStack& S);
void check(SqStack S);
int main()
{
SqStack S;
printf("输入要创建的栈的元素:");
initstack(S);
printf("你创建的栈为:");
check(S);
system("pause");
return 0;
}
void initstack(SqStack& S)
//初始化栈
{
int *p;
int i;
S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
//在这里如果用STACK_INIT_SIZE会出错,如果改成具体数字则能成功运行
if(!S.base) exit(0);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
p=S.base;
for(i=0;i<S.stacksize;i++)
{
scanf("%d",p++);
S.top++;
}
}
void check(SqStack S)
//用于回显栈中元素
{
int *p;
for(p=S.base;p<S.top;p++)
printf("%d ",*p);
}