スタックを操作するプログラムを作ってみたんですが、
ちなみにプログラムはしたのやつです。
#include<stdio.h>
int stack[1024];
int sp=0;
push(int v)
{
sp=sp-1;
stack[sp]=v;
}
int pop()
{
int v;
v=stack[sp];
sp=sp+1;
return v;
}
main()
{
int d;
push(1);
push(2);
push(3);
d=pop();
printf(%d\n,d);
d=pop();
printf(%d\n,d);
push(4);
d=pop();
printf(%d\n,d);
push(5);
d=pop();
printf(%d\n,d);
d=pop();
printf(%d\n,d);
}
これで結果が
3
2
4
5
1
となり、思ったとおりになったんですが
どうもプログラムとして間違っているらしいんです。
どこが間違っているのかどなたか教えていただけないでしょうか?
sp は最初は 0 ですね。
最初に push すると -1 になりますね。
で、stack[ -1 ] ってドコですか?
何点か
・mainの戻りはint。
・結果が全角で出る不思議
・pushでindexをインクリメントしてpopでデクリメントすればいいかも。
(あるいは、初期値を1024とするとか。)
・ていうか1024ってなに?
・スタックに何もつんでいないときの振る舞いが考慮されていない。
・pushでスタックサイズを越えた時の振る舞いも考慮されていない。