栈的简单输入问题

zsplx1111 2010-04-20 10:52:21
问题见红字


#include<stdio.h>
#include <stdlib.h>
const int StackSize=100; //顺序栈的初始分配空间
typedef int ElemType; // 数据元素类型
typedef struct sq
{ ElemType data[StackSize]; // 一维数组子域
int top; // 栈顶指针子域
}SqStack; // 栈的顺序结构体类型

//函数声明
void InitStack(SqStack *&sq);
int Push(SqStack *sq,ElemType x);
void out_s(SqStack sq);


//函数实现
void InitStack(SqStack *&sq) //初始化栈
{
sq=(SqStack *)malloc(sizeof(SqStack));
sq->top=-1;
}
int Push(SqStack *sq,ElemType x) //进栈
{
if(sq->top==StackSize-1) return 0; //栈满
else
{
sq->top++;
sq->data[sq->top]=x;
return 1;
}
}
void out_s(SqStack *sq)
{
int i;
printf("\n");
if(sq->top<0)
{
printf("这是一个空栈 !");
printf("\n");
}
for(i=sq->top;i>=0;i--)
printf("第 %d 个数据元素是: %d\n",i,sq->data[i]);
}

//主函数
void main()
{
SqStack *sq; //先开始缺少这个,对sq的声明
int x,i;
InitStack(sq);
printf("请输入要进入栈的数字(输入-1结束)\n");
for(i=0;i<StackSize;i++)
{
printf("data=");
scanf("%d\n",&x); //通过键盘输入为变量x赋值
if(x==-1) break; //咋要输入2个-1呢,才出去呢???
else
Push(sq,x); //将x压入栈中
}
out_s(sq);
//printf("\n 进栈 x=?");
//scanf("%d",&x);
//Push(sq,x); out_s(sq);
}
...全文
100 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinzaiyiqi 2010-04-21
  • 打赏
  • 举报
回复
顶楼上的!
丈八涯 2010-04-21
  • 打赏
  • 举报
回复
scanf("%d\n",&x); //通过键盘输入为变量x赋值
改为
scanf("%d",&x); //通过键盘输入为变量x赋值
zsplx1111 2010-04-21
  • 打赏
  • 举报
回复
哈哈哈,我说呢,唉,赖我自己粗心,好久没犯过这个毛病了,谢谢上面的两位!!!
记下了,也长了个教训,输入的小问题看来也不可以忽略的
dweqd 2010-04-21
  • 打赏
  • 举报
回复
额,不清楚
aleyn 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 g_idea 的回复:]
scanf("%d\n",&x); //通过键盘输入为变量x赋值
改为
scanf("%d",&x); //通过键盘输入为变量x赋值
[/Quote]
scanf格式问题,用scanf输入时,必须与其里面的格式相匹配,当输入一个数据之后还得输入一个换行符,
sosidami 2010-04-20
  • 打赏
  • 举报
回复
当输入等于-1,认为输入结束啊。。不清楚楼主问题

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧