ページ 11

First In, First Outに直したい

Posted: 2012年6月20日(水) 00:46
by DOG

コード:

void push (int *stack, int n, int *sp)
{
  if ((*sp) >= SIZE){
      printf ( "Stack Error\n");
    }
  else {
      stack[(*sp)++] = n; 
    }
}
push関数のstack[(*sp)++] = n;を、
「nをスタックの末尾に追加」に変えたいのですがどう書けばいいですか?

Re: First In, First Outに直したい

Posted: 2012年6月20日(水) 10:03
by softya(ソフト屋)
そうなるとスタックではなくキューとなりますので、push,pop,stackなどの用語は名前を変える必要があります。
あと管理の都合上リングバッファにしたほうが良いでしょう。

Re: First In, First Outに直したい

Posted: 2012年6月20日(水) 10:07
by non
「nをスタックの末尾に追加」という意味がわかりません。

仮にスタックが未使用だとして、SIZEが10だとしたら、
*spは0なのですよね。

で、nはどこに入れるのですか?
今のままならstack[0]ですよね。

もしかして、stack[SIZE-1]の場所でしょうか?

「追記」
ごめんなさい。タイトルを忘れてました。キューですね。

Re: First In, First Outに直したい

Posted: 2012年6月21日(木) 14:29
by DOG
解決しました!
ありがとうございました。

Re: First In, First Outに直したい

Posted: 2012年6月21日(木) 14:49
by softya(ソフト屋)
DOG さんが書きました:解決しました!
ありがとうございました。
なにがどう解決したのでしょうか?
フォーラムルールに沿って最終結果の投稿をお願いします。