顺序栈基本操作的小程序 有点问题
源程序是(问题嵌在程序了 很大的字 哈哈):
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef struct
{
int data;
int top;
}seqstack;
void main()
{
int input_stack(seqstack *s);
int get_stack(seqstack *s,int k);
int output_stack(seqstack *s);
seqstack *s;
s=(seqstack*)malloc(sizeof(seqstack));
s->top=-1;
int k;
printf("请输入入栈的元素:\n");
input_stack(s);
printf("当前栈顶元素是:\n");
get_stack(s,k);//说是这里没有初始化k 这k不就是int嘛 还怎么初始化??我试着加了一句 k=(int)malloc(sizeof(int))就不报错了 但是 运行时输出的根本不是栈里的值 是一个很大的值 我猜想是地址 但是就想不通是哪里出了问题 求 鱼友们帮一下我…… printf("k=%d\n",k);
printf("依次输出栈里的所有元素:\n");
output_stack(s);
system("pause");
}
int input_stack(seqstack *s)
{
int i;
if((s->top)>=MAXSIZE-1)
return 0;
for(i=0;i<MAXSIZE;i++)
{
scanf("%d",&s->data);
if(s->data==0)
return 0;
s->top++;
}
return 1;
}
int get_stack(seqstack *s,int k)
{
k=s->data;
return 1;
}
int output_stack(seqstack *s)
{
int i;
if((s->top)<0)
return 0;
for(i=s->top;i>=0;i--)
{
printf("%d ",s->data);
s->top--;
}
return 1;
}
有几个地方有点小问题
改过的代码:
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef struct
{
int data;
int top;
}seqstack;
void main()
{
int input_stack(seqstack *s);
int get_stack(seqstack *s,int &k);
int output_stack(seqstack *s);
seqstack *s;
s=(seqstack*)malloc(sizeof(seqstack));
s->top=-1;
int k;
printf("请输入入栈的元素:\n");
input_stack(s);
printf("当前栈顶元素是:\n");
get_stack(s,k);//说是这里没有初始化k 这k不就是int嘛 还怎么初始化??我试着加了一句 k=(int)malloc(sizeof(int))就不报错了 但是 运行时输出的根本不是栈里的值 是一个很大的值 我猜想是地址 但是就想不通是哪里出了问题 求 鱼友们帮一下我……
printf("k=%d\n",k);
printf("依次输出栈里的所有元素:\n");
output_stack(s);
system("pause");
}
int input_stack(seqstack *s1)
{
int i;
for(i=0;i<MAXSIZE;i++)
{
if((s1->top)>=MAXSIZE-1)
return 0;
scanf("%d",&s1->data);
if(s1->data==0)
return 0;
s1->top++;
}
return 1;
}
int get_stack(seqstack *s,int &k)
{
k=s->data;
return 1;
}
int output_stack(seqstack *s)
{
int i;
if((s->top)<0)
return 0;
for(i=s->top;i>=0;i--)
{
printf("%d ",s->data);
s->top--;
}
return 1;
}执行结果:
不会,友情帮顶~嘿嘿 小新110 发表于 2013-4-9 21:57 static/image/common/back.gif
有几个地方有点小问题
改过的代码:
执行结果:
我不明白 为什么&k就可以了 麻烦你给讲解一下呗 谢谢谢谢 int &k = i;是指k是i引用,k其实就是i。 之所以会出现k没定义跟你定义k的位置有关系,试试把int k;放在seqstack *s;前面或者后面。其他的问题楼上已经给出答案。
强烈支持楼主ing……
页:
[1]