こんにちは。つい二ヶ月前くらいにVBを始めた初心者なのですが、データ構造で、スタックとキューの二つのデータ構造の特徴(長所&短所)と、この二つを使うときというのは例えばどういう時なのかが全然わかりません。どなたかぜひ、教えていただけないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>二ヶ月前くらいにVB


>スタックとキューとは

とありますが、これを説明するには、レジスタなどの説明から入って、図解でやらないと難しいですね・・・

ところでVBの本か何かを見たのですか?ぼくは今まで「スタック/キュー」という言葉の出てくるVBの本は、あまり見た事がないですよ。他の言語でしかあまり使わない言葉ですね。
メモリの開放を使用としてるのですか?

もし単純にスタック/キューの事を知りたいだけなら、VBの質問というより、プログラミング全般で質問した方が、適切な回答が得られるかも?

一応参考URLを載せておきます。
言語はCで書かれてますが、単純な演算子しか出てないので、理解できると思います。
たぶん本に書いてあるような事を書いてるだけだと思いますが・・・

参考URL:http://www.ics.nara-wu.ac.jp/~makato/programming …
    • good
    • 0
この回答へのお礼

VBの本に載っていました。そうですかぁ…。いや、メモリの開放はでてきてないですけど…。とにかくありがとうございました。すぐに参考にのせていただいたページへ行ってみます!!

お礼日時:2001/11/15 18:18

スタック:LIFO(Last In First Out)後から入った物が先に処理される。


キュー :FIFO(First In First Out)先に入ったものが先に処理される。

キューは通常の行列がすべて該当します。一番公平(?)な処理方法です。
スタックは新聞をダンボール箱に積んだり、一つしか入口のないバスに沢山の人を乗せたりした時に、出てくる順番が、乗った順番と逆転するものです。

特徴(長所、短所)というより、目的に合わせて使うと考えた方がいいです。

さて、本題の用途ですが、圧倒的にキューがよく使われます。
スタックを使うところだけ抜き出した方が楽です。すぐ思い付くものは
(1)サブルーチンコールの戻りアドレスの待避
(2)再帰処理の時のデータエリアの待避
(3)レジスタ間のデータの交換(入替)・・・アセンブラ
(4)コンパイラが数式を解読する時のバッファー
等です。
    • good
    • 0
この回答へのお礼

そうですかぁ…。ナルホド。じゃあキューの方が重要なんですね…。ありがとうございました!!

お礼日時:2001/11/15 18:20

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qphotoshopとelementの違い

Adobe Photoshopとphotoshop elementはどういう違いがあるのでしょうか?
Photoshopしか使ったことがないのですが、Photoshopデータのガイドがelementでは見えないと聞いたのですが、見えるようにする方法などはありませんか?

Aベストアンサー

参考URLにPhotoshop CS2とPhotoshop Elements 3.0の機能比較が載っています。

Elementsを少しだけさわった事がありますが、詳細に補正などは不向きな印象です。

また、Win版・Mac版で多少機能が違うようです。
http://support.adobe.co.jp/faq/faq/qadoc.sv?4449+001

参考URL:http://support.adobe.co.jp/faq/faq/qadoc.sv?2913+001

Q長所&短所

いつもありがとうございます。
VBをつかいはじめフッと思ったのですが、VBの長所と短所って簡単に言うと何でしょう???

Aベストアンサー

簡単に。

長所:
部品がたくさんそろっていて開発が楽。
書記エラー検出機能で楽。
画面設計がGUIで行えるため楽。
上記三点総合して、開発工数が少なくすむ。

短所:
メモリ管理ができない。(やろうと思えばできるが)
インタプリタなので遅い。
DLLに依存するため、EXE単体で動かすことができない。

でも、一番の短所だと思うのが
初心者がちょっと触って簡単に動くので
「お、俺ってプログラム書けるじゃん」
と安易に増長してしまうところでしょうか。

QPhotoshop7をWindows7にインストールするには

これまでWindows XP にインストールしたPhotoshop7を元に、Photoshop CS,
Photoshop CS3 とバージョンアップして使用してきた。
パソコンの故障で、Windows 7 を新規購入したが、Photoshop 7 のインストールができない。
解決法は?

Aベストアンサー

7.0<-CS<-CS3
とバージョンアップしたとき、新規PCの最新Windowsにインストールする場合は最新のCS3のディスクでセットアップを行ってください。

手順の途中でアップグレード対象製品のCD-ROMやシリアルキーの要求が来ます。出てきたメッセージにしたがって適切な処置を施しましょう。

それ以前にWindows7にPhotoshop7.0をインストールするとシステムフォルダにとっても古いシステムファイルをコピーしてWindowsそのものの動作が怪しくなる可能性があります。
最悪の場合はWindows7の再セットアップが必要になってしまいます。

Qホームページ作成でCGI、VBスクリプト、VB.NETなどがありますが、長所短所はどんなところなのでしょうか?

すいません、タイトルどおりなのですが、ホームページ作成でCGI、VBスクリプト、VB.NETなどがありますが、長所短所はどんなところなのでしょうか?
自分自身VB,VB.netは多少わかるのですが、CGI(Perl)が主流ぽいですし、どれでつくればいいのか悩んでおります。

Aベストアンサー

「ホームページ作成」という部分ですが、まず基本はHTMLであって、そこに動的な要素を加えたいときに、おっしゃっているような技術を使います。

で、おそらく勘違いされているかと思うのですが、CGI、VBScript、VB.Netは、同じ位置に並んでいるものではなく、それぞれ指すカテゴリが少し違います。なので比較対照にはならないように思います。

まずVBScriptは、JavaScriptなどと同じ「クライアントサイドスクリプト」のひとつで、ブラウザが読み取って実行するプログラムです。当然、ブラウザに完全依存するので、どう動くのか、動くのか動かないのか、などは見る側によって様々です。

「クライアントサイドスクリプト」がブラウザ上で動くのに対して、サーバー上で動くプログラムが「サーバーサイドスクリプト」です。検索エンジンやブログや掲示板やアクセスカウンターなどなどなど。
そのスクリプトを動かす「環境」のひとつが CGI です。他にもASPやモジュールとして動かす方法があります。
で、そのスクリプトを書く言語の種類に、perlやPHPやrubyなどがあります。よくperlはCGIでPHPはモジュール(したがってPHPのほうが速い)と勘違いしている人がいるので注意。

VB.Netは微妙にこれらとは別の範疇を指しますが、ASPなどで言語にVBを使う、などというときに使います。もともとWebだけに特化したものではありません。言語+開発環境を指すもので、WindowsアプリやWebアプリを作ることができる、というものです。

以上のように、それぞれ異なるもので比較対照にはならないように思います。
たとえばVBScriptとJavaScriptを比べるとか、CGIとmodを比べるなら解るのですが。

ちなみに、サーバーサイドスクリプトの主流の言語は、PHPかperlだと思います。様々な応用がきくという意味ではperl、初心者でも覚えやすいのはPHP、というところでしょうか。
前述したように、PHPのほうが速いと勘違いされがちですが、perlもPHPも、実行形態がCGIかモジュールなのかで速さが違うだけです。

「ホームページ作成」という部分ですが、まず基本はHTMLであって、そこに動的な要素を加えたいときに、おっしゃっているような技術を使います。

で、おそらく勘違いされているかと思うのですが、CGI、VBScript、VB.Netは、同じ位置に並んでいるものではなく、それぞれ指すカテゴリが少し違います。なので比較対照にはならないように思います。

まずVBScriptは、JavaScriptなどと同じ「クライアントサイドスクリプト」のひとつで、ブラウザが読み取って実行するプログラムです。当然、ブラウザに完全依存する...続きを読む

QPhotoShopでのコピー&ペーストがうまく出来ません。

PhotoShopで、クリップポードにある画像をペーストしようとすると、前にペーストした画像が貼り付けられてしまいます。

PhotoShopでこぴーした画像はちゃんと貼り付けられるので、どうも、PhotoShop自身が、普通のクリップボードとは別に、PhotoShopだけのクリップボードを使っているみたいです。

どうしたら、他の画像ソフトからクリップボードにコピーした画像をPhotoShopに貼り付けられますか?

Aベストアンサー

Winでお使いですよね。

ぼくは、長年Mac環境でPhotoshopを使ってきて、ここ2年ほどWin(2000)でも使っています。そんなわけで、Winにそれほど詳しくないのですが。

コピーした時点で、クリップボードに確実に画像が送られていますでしょうか。
ためしにこのgooのページの一番上のロゴのgifをドラッグ選択して、編集>コピーをおこなったところ、クリップボードに入りませんでした。右クリック>コピーでも入ったり、入らなかったり。(どちらも同じことと思いますが)。
入っているかどうかは、たとえばペイントなどに張り付くか、あるいは、クリップボードの中身を見るフリーソフトがあるかも。(MACでは確かありましたが)。

入っていれば、当然Photoshopで問題なくペーストできます。(質問の前の画像がペーストされるというのは、つぎのコピーがおこなわれていないということでしょう)。

ということは、Photoshopの問題というより、Winで画像のコピーがちょっとへんな気がします。(テキストに関しては、問題を感じたことはありませんし、PrintScreen~当然クリップボードを使っている~のPhotoshopへの貼り付けもうまくいくんですけどね)。

Winでお使いですよね。

ぼくは、長年Mac環境でPhotoshopを使ってきて、ここ2年ほどWin(2000)でも使っています。そんなわけで、Winにそれほど詳しくないのですが。

コピーした時点で、クリップボードに確実に画像が送られていますでしょうか。
ためしにこのgooのページの一番上のロゴのgifをドラッグ選択して、編集>コピーをおこなったところ、クリップボードに入りませんでした。右クリック>コピーでも入ったり、入らなかったり。(どちらも同じことと思いますが)。
入っているかどうかは、たとえばペ...続きを読む

QDAOでデータベースを二つ開くには?

環境
Windows2000
VB6

DAOで同じデータベースを開くためのやり方がわかりません。
下記のようにマスタのキーを使用して他のテーブルの
内容を更新したいのですが

よろしくお願いします。m(__)m

Dim wsAs Workspace
Dim dbAs Database
Dim qdAs QueryDef
Dim rsAs Recordset
Dim STRSQL As String
dim strsql2 as string

Set ws = DBEngine.Workspaces(0)

Set db = ws.Databases(0)
STRSQL = "SELECT KEY FROM マスタ"
Set qd = db.CreateQueryDef("", STRSQL)
Set rs = qd.OpenRecordset()

Do While Not rs.EOF
strsql2 = "Update data from マスタ where key = " & rs!key

????

rs.MoveNext
Loop

rs.Close
qd.Close
db.Close

環境
Windows2000
VB6

DAOで同じデータベースを開くためのやり方がわかりません。
下記のようにマスタのキーを使用して他のテーブルの
内容を更新したいのですが

よろしくお願いします。m(__)m

Dim wsAs Workspace
Dim dbAs Database
Dim qdAs QueryDef
Dim rsAs Recordset
Dim STRSQL As String
dim strsql2 as string

Set ws = DBEngine.Workspaces(0)

Set db = ws.Databases(0)
STRSQL = "SELECT KEY FROM マスタ"
Set qd = db.CreateQueryDef("", STRSQL)
...続きを読む

Aベストアンサー

>Set ws = DBEngine.Workspaces(0)
>
>Set db = ws.Databases(0)

肝心な部分が記述されていません
使用しているRDBは?


ちょっと妄想してみてアドバイスを

>質問:DAOでデータベースを二つ開くには?

質問:DAOでデータベース内のテーブルを二つ開くには?

だとしたら、
strsql2 = ~
の後に
Call db.Execute(strsql2)

だが、SQL(UPDATE)の記述が間違っています


ここから以下は仮定で
・使用しているRDBを「Access」とする
・Accessのファイルは、Cドライブの直下に"test.mdb"として存在する
・「マスタ」テーブルの「KEY」フィールドを基にして、
 「テスト」テーブルの「KEY」フィールドを更新する
  (「KEY」フィールドの値をマスタ、テストともに更新する)

簡潔にコーディングしたもの
  Dim db As DAO.Database
  Dim rs As DAO.Recordset
  Dim STRSQL As String
  Dim strsql2 As String

  Set db = DAO.OpenDatabase("C:\test.mdb")
  STRSQL = "SELECT KEY FROM マスタ"
  Set rs = db.OpenRecordset(STRSQL, dbOpenDynaset)

  Do While Not rs.EOF
    strsql2 = "UPDATE テスト " & _
         "SET KEY = " & rs.Fields("KEY").Value + 1000 & " " & _
         "WHERE KEY=" & rs.Fields("KEY").Value
    Call db.Execute(strsql2)
    rs.Edit
    rs.Fields("KEY").Value = rs.Fields("KEY").Value + 1000
    rs.Update
    rs.MoveNext
  Loop

  rs.Close
  db.Close



下記サイトなどをみてもっと頑張って下さい
VBでデータベース
http://homepage2.nifty.com/inform/vbdb/

>Set ws = DBEngine.Workspaces(0)
>
>Set db = ws.Databases(0)

肝心な部分が記述されていません
使用しているRDBは?


ちょっと妄想してみてアドバイスを

>質問:DAOでデータベースを二つ開くには?

質問:DAOでデータベース内のテーブルを二つ開くには?

だとしたら、
strsql2 = ~
の後に
Call db.Execute(strsql2)

だが、SQL(UPDATE)の記述が間違っています


ここから以下は仮定で
・使用しているRDBを「Access」とする
・Accessのファイルは、Cドライブの直下に"test.mdb"...続きを読む

QPhotoshop Elements 5のシリアル番号を2つ持っている場合

私のPCには
既にPhotoshop Elements 5が入っているんですが

最近、ペンタブレットを買ったら
Photoshop Elements 5のソフトが同梱されていました。



以前から持っているPhotoshop Elements 5は
Photoshop Elements 5のみ入っているディスクで

今回付いてきたPhotoshop Elements 5は、別のソフトも複数入っているディスクです。


もちろん
今回手に入れたPhotoshop Elements 5のシリアル番号を使用して
新たにPhotoshop Elements 5をインストールするつもりはないんですが



今回付いてきたPhotoshop Elements 5を
前から持っていたPhotoshop Elements 5のみ入っているディスクとして管理するのは可能なんでしょうか?


紛らわしい書き方ですみませんm(__)m



複数ソフトが入っているディスクだと管理するのが紛らわしいので

以前から持っていたPhotoshop Elements 5のみ入っているディスクに
今回手にいれたシリアル番号を割り当てるのは可能なんでしょうか?


もし新たなパソコンに
Photoshop Elements 5をインストールする際

その
前から持っていたPhotoshop Elements 5のみ入ったディスクと
今回手に入れたシリアル番号でインストールするのは可能なんでしょうか?



よろしくお願いします。

私のPCには
既にPhotoshop Elements 5が入っているんですが

最近、ペンタブレットを買ったら
Photoshop Elements 5のソフトが同梱されていました。



以前から持っているPhotoshop Elements 5は
Photoshop Elements 5のみ入っているディスクで

今回付いてきたPhotoshop Elements 5は、別のソフトも複数入っているディスクです。


もちろん
今回手に入れたPhotoshop Elements 5のシリアル番号を使用して
新たにPhotoshop Elements 5をインストールするつもりはないんですが



今回付いて...続きを読む

Aベストアンサー

インストーラーが別(例えばPremiere ElementsとPhotoshop Elementsのバンドルでそれぞれのインストーラーが立ち上がるの)であればシリアルは共通です。
adobeは最初の4桁が製品を表すので、それが同じであればインストールディスクはどれを使ってもインストール可能ですし、インストールディスクはどれを用いてもライセンス上の問題はありません。2つのシリアルを比べてみてください。

Q構造体→文字列→構造体 をする方法

VB6.0の話です。

 不特定の構造体を文字列(String)に格納し、これを最初の構造体に戻す事はできませんか?

 具体的には「共有メモリを使い構造体を文字列にして格納>別ウインドウで文字列を取得して構造体に戻す」と言う事をやりたいんです。
 共有メモリに不特定の構造体をいれる方法でもいいんですが…VALIANTだとサイズが大きすぎて実用性がありませんし、違う主旨の質問をするのも良くないので回答はあくまで「構造体→文字列→構造体 をする方法」と言う事でお願いします。

Aベストアンサー

APIを使えば出来ます。

Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (cStr1 As Any, cStr2 As Any, ByVal iLen As Long)


構造体→文字列
Call CopyMemory(strB, ByVal typeA, Len(typeA))

文字列→構造体
Call CopyMemory(typeA, ByVal strB, Len(typeA))

ただし構造体のメンバに配列があると使えません(VBの配列はメモリを連続してとらない為、メモリーリークします)。

また構造体の中身は string *5 などの固定長である必要があります。

以上です。

QPhotoshop AlbumからPhotoshop Elementsに乗り換える

Photoshop Albumで整理してきたものを「Photoshop Elements」で引き継げますか?

これまでPhotoshop Album(miniではありません)で画像を整理してきました。いろいろなラベル(名札)などもつけています。
今、Photoshop Albumは販売していないということなので、これからは「Photoshop Elements」に乗り換えようと思うのですが、これまでつけてきたラベルなどを引き継げますか?(psaファイルを開けますか)

Aベストアンサー

私は単独ソフトが好きなので、Albumと合併後のPhotoshop Elementsはあまり使いませんが、引き継ぎは出来たとおもいます、またバージョンアップの対象製品になっています。

http://support.adobe.co.jp/faq/faq/qadoc.sv?232535+002

http://support.adobe.co.jp/faq/qadoc/aj25.nsf/900f7bf03cd385244925696900084026/a9901aab93a5710d49256fab000426f7?OpenDocument

FAQでは、出来るとなっていますね。

当方、英語版です。

Qスタック領域エラーについて

いつも参考にさせていただいています。
ご回答よろしくおねがいします。

新規のフォームにチェックボックスを3つ追加しました。
コントロール配列です。
------frame1--------
| checkbox1(0) |
| checkbox1(1) |
| checkbox1(2) |
--------------------

このときに、

---------------------------------------------
Private Sub Check1_Click(Index As Integer)

Check1(0).Value = 0
Check1(1).Value = 0
Check1(2).Value = 0
Check1(Index).Value = 1

End Sub
---------------------------------------------

以上のようにプログラムを実行すると、
スタック領域エラー(エラー28)が出力されます。
この回避方法について、また原因がおわかりいただけたら
ご教授おねがいできないでしょうか?

OS:WinXP SP3
環境:VB6

いつも参考にさせていただいています。
ご回答よろしくおねがいします。

新規のフォームにチェックボックスを3つ追加しました。
コントロール配列です。
------frame1--------
| checkbox1(0) |
| checkbox1(1) |
| checkbox1(2) |
--------------------

このときに、

---------------------------------------------
Private Sub Check1_Click(Index As Integer)

Check1(0).Value = 0
Check1(1).Value = 0
Check1(2).Value = 0
Check1(Index).Value = 1...続きを読む

Aベストアンサー

原因は、
Private Sub Check1_Click(Index As Integer)
の中でチェックボックスの値を変えているため、自分自身の手続きを再帰呼び出ししているためです。

対処方法は、最初にすべてのチェックボックスを0にするのではなく、Indexを調べて必要なチェックボックスの値だけを変えるようにしましょう。


人気Q&Aランキング

おすすめ情報