First In, First Outに直したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
DOG

First In, First Outに直したい

#1

投稿記事 by DOG » 14年前

コード:

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#2

投稿記事 by softya(ソフト屋) » 14年前

そうなるとスタックではなくキューとなりますので、push,pop,stackなどの用語は名前を変える必要があります。
あと管理の都合上リングバッファにしたほうが良いでしょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

non
記事: 1097
登録日時: 15年前

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

#3

投稿記事 by non » 14年前

「nをスタックの末尾に追加」という意味がわかりません。

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

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

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

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

DOG

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

#4

投稿記事 by DOG » 14年前

解決しました!
ありがとうございました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#5

投稿記事 by softya(ソフト屋) » 14年前

DOG さんが書きました:解決しました!
ありがとうございました。
なにがどう解決したのでしょうか?
フォーラムルールに沿って最終結果の投稿をお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る