プログラムとして間違っている?

[戻る]
レイ 2004/07/16(金) 16:53:37
スタックを操作するプログラムを作ってみたんですが、
ちなみにプログラムはしたのやつです。

#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
となり、思ったとおりになったんですが
どうもプログラムとして間違っているらしいんです。
どこが間違っているのかどなたか教えていただけないでしょうか?

シャノン 2004/07/16(金) 16:55:22
sp は最初は 0 ですね。
最初に push すると -1 になりますね。
で、stack[ -1 ] ってドコですか?

たく [E-Mail] 2004/07/16(金) 17:08:45
何点か

・mainの戻りはint。

・結果が全角で出る不思議

・pushでindexをインクリメントしてpopでデクリメントすればいいかも。
(あるいは、初期値を1024とするとか。)

・ていうか1024ってなに?

・スタックに何もつんでいないときの振る舞いが考慮されていない。

tib 2004/07/16(金) 18:06:24
・pushでスタックサイズを越えた時の振る舞いも考慮されていない。

古いスレッドには追加発言できません。