- ベストアンサー
C言語のリスト、スタック、キュー、逆ポーランド法など
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず以下のサイトからダウンロードできるソースコード集に、いくらか含まれています。 http://www.bohyoh.com/Books/CalgoA/ http://www.matsusaka-u.ac.jp/~okumura/algo/ 「逆ポーランド記法」はそのまま検索すればすぐ見つかるはずです。
関連するQ&A
- c言語 リストデータ構造 キュー スタック がわかりません
ポインタを用いた線形リストデータ構造を利用して,キーボードから順に入力した複数の整数値(int型)を空の「スタック」および「キュー」にそれぞれ保存し,取り出した時,出力される整数値を順に表示するプログラム. 動作確認のために入力する整数値は,年号と月の数字の部分とせよ(2008年5月なら,「2→0→0→8→0→5」の順).また,スタックとキューに保存されているデータがどのような順で出力されるかをそれぞれ表示するようにせよ.(スタックの場合は「5→0→8→0→0→2」の順で出力され,キューの場合は「2→0→0→8→0→5」の順で出力されることを表示させ確認せよ) こうのようなプログラムを作らなくてはいけないのですが、まったくわかりません。参考にでもソースを教えていただけないでしょうか? また、詳しく解説されている(初級と中級レベルそれぞれについて)サイトや書籍がありましたらそちらもお願いいたします。
- 締切済み
- C・C++・C#
- C言語で逆ポーランド演算式をスタックを用いて表現するには
C言語でスタックを使って逆ポーランド表記の演算を行うプログラムを作っています。 正の整数の場合はできたのですが、小数や負の数にも対応できるように変えるにはどうしたらよいのでしょうか? 例えば、スペースで区切られた 1.2 4.2 -3.2 + * と言う様な値を入力してちゃんと計算できるようにしたいのですが・・・。
- 締切済み
- C・C++・C#
- スタック、キュー、リスト、2分木の使い道は?
主な定番データ構造として (1)スタック (2)キュー (3)リスト (4)2分木 これらのデータ構造がありますが、特に「スタック」と「キュー」は一体何に使えるのでしょうか? 「スタック」や「キュー」は使い道が思いつかないのですが、一体何に使えるのですか? データ構造である「スタック」「キュー」「リスト」「2分木」の使い道を教えてください。 よろしくお願いいたします。
- 締切済み
- その他([技術者向] コンピューター)
- スタック C言語
四則演算のプログラミング(C++)をスタックを用いて作りたいのですがどうすればいいのか全く分かりません。 スタックの原理は分かるのですが…。 かなり検索してスタックの四則演算を少し見ましたが、まともに載ってるのがあまりなく…。ポーランド記述法つかうのか?とか…ドンドンわからなくなりました。 分かるかた、教えてください。 プログラミング載せてくれたら助かりますが、方針だけでも大丈夫です。 作りたいプログラミングは自分で式を入力して、実行結果にその答えが表示されるというものです。また、入力する式はポーランド記述法のものではなく、普通の式(4*2+1 など)です。
- ベストアンサー
- C・C++・C#
- キューとスタックについて
キューとスタックについて質問です。 abcと言う文字列があった場合、キューとスタックで何通りの取り出し方が出来るかと言う問題があります。 スタックについては5通りで納得しているのですが、キューは私は1通りだと思うのですが、 友達は3通りだと言います。 1通りと3通りのどちらが正解なのでしょうか。
- ベストアンサー
- 情報処理技術者
- C言語・スタックを使用した逆ポーランド記法について
C言語でスタック(リスト構造)を使用した逆ポーランド記法のプログラムを作りたいのですが 計算式(例:1234+*+)が入力された場合、どのようにして数字と演算子を区別すればいいのでしょうか? 一応スタック構造の部分は、 #include <stdio.h> #include <stdlib.h> /*スタック構造*/ typedef struct stack { int max; int ptr; int *stk; } Stack; /*スタックの確保・初期化*/ int StackAlloc(Stack *s, int max) { s->ptr = 0; if ((s->stk = calloc(max, sizeof(int))) == NULL) { s->max = 0; return (-1); } s->max = max; return (0); } /*スタック解放*/ void StackFree(Stack *s) { if (s->stk != NULL) { free(s->stk); s->max = s->ptr = 0; } } /*プッシュ*/ int StackPush(Stack *s, int x) { if (s->ptr >= s->max) return (-1); s->stk[s->ptr++] = x; return (0); } /*ポップ*/ int StackPop(Stack *s, int *x) { if (s->ptr <= 0) return (-1); *x = s->stk[--s->ptr]; return (0); } /*データのピーク*/ int StackPeek(const Stack *s, int *x) { if (s->ptr <= 0) return (-1); *x = s->stk[s->ptr - 1]; return (0); } /*スタックの大きさを返却*/ int StackSize(const Stack *s) { return (s->max); } /*データを返却*/ int StackNo(const Stack *s) { return (s->ptr); } /*スタックは空か*/ int StackEmpty(const Stack *s) { return (s->ptr <= 0); } /*スタックは満杯か*/ int StackFull(const Stack *s) { return (s->ptr >= s->max); } /*スタックを空にする*/ void StackClear(Stack *s) { s->ptr = 0; } といった感じで仕上げています。
- ベストアンサー
- C・C++・C#
- 電卓ソフトを作るには逆ポーランド法で良いのですか?
プログラミングの勉強をしながら式入力型の電卓を作りたいと思い調べたところ「逆ポーランド法」を知りました。 まず四則演算出来るものを作り最終的には関数電卓を目指そうと思っているのですが、この「逆ポーランド法」を取り入れた計算プログラムを学べば良いのでしょうか?もっと適している他の手法はありますか? 公開されている式入力型の電卓ソフトはどのような手法でプログラムされているのでしょうか?(なかなか式入力型のサンプルが見つからなくて…。) 言語はActiveBasicを使用していますが、情報が少ない為VisualBasicのサイトで勉強しています。 宜しくお願いいたします。
- 締切済み
- その他(プログラミング・開発)
- ポーランド記法、逆ポーランド記法のプログラム
ポーランド記法、逆ポーランド記法のプログラムがわかる方、是非教えてくださいm(__)m 言語は何でもいいのでお願いします~
- ベストアンサー
- C・C++・C#