吠错了树 2018-12-06 07:19 采纳率: 0%
浏览 490

栈的基本操作,为什么输出有乱码?

#include
#include
#include
#define OK 1
#define ERROR 0
#define Stack_Size 20//定义栈最多能够存储的元素个数
typedef struct
{
int elem[Stack_Size];//利用一维数组顺序存储栈中的元素
int top;//整型变量top存储栈顶元素的下标,作为栈顶指针,top为-1时表示空栈
}SeqStack;

int InitStack(SeqStack );//初始化栈,即将一个栈清除为空
int StackEmpty(SeqStack *);//检查一个栈是否为空
int CreateStack(SeqStack *, int);//随机数顺序栈的建立
int pop(SeqStack
,int*);//向一个栈中删除元素
int push(SeqStack , int);//向一个栈中插入元素
void Print(SeqStack
);//输出栈
int Copy(SeqStack*, SeqStack*);//将栈S1中的元素倒序输入到栈S2中

int main()
{
SeqStack S1, S2; int n;
InitStack(&S1);
InitStack(&S2);
StackEmpty(&S1);
StackEmpty(&S2);
printf("请输入你要输入的元素个数:\n");
scanf_s("%d", &n);
CreateStack(&S1, n);
Print(&S1);
Copy(&S1, &S2);
Print(&S2);
return OK;
}
int InitStack(SeqStack *S)
{
S->top = -1;
return OK;
}
int StackEmpty(SeqStack *S)
{
return(S->top == -1 ? OK : ERROR);
}
int CreateStack(SeqStack *S, int n)
{
srand((unsigned)time(0));//srand种下随机种子,time(0)是得到当前的时间值,每时每刻的时间都不一样,所以每次执行得到的随机数都不一样
for (int i = 0; i < n; i++)
{
S->elem[++S->top] = rand() % 8+1;//随机抽取的从1到8的数字
}
return OK;
}
int pop(SeqStack *S, int *x)
{
if (S->top == -1) return ERROR;
else
{
*x = S->elem[S->top];
S->top--;
return OK;
}
}
int push(SeqStack *S, int x)
{
if (S->top = Stack_Size - 1) return ERROR;
S->top++;
S->elem[S->top] = x;
return OK;
}
void Print(SeqStack *S)
{
printf("输出元素:\n");
for (int i = S->top; i >= 0; i--)
{
printf("%d", S->elem[i]);
}
printf("\n");
}
int Copy(SeqStack *S1, SeqStack *S2)
{
int t;
for (int i=S1->top; i>=0; i--)
{
pop(S1, &t);
push(S2, t);
}
return OK;
}

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配
    • ¥15 Power query添加列问题
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 報錯:Person is not mapped,如何解決?
    • ¥15 c++头文件不能识别CDialog
    • ¥15 Excel发现不可读取的内容
    • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题