みなさんの力をお貸しください
みなさんの力をお貸しください
来週までに出さなければいけない課題がわかりません。
問題は2問あります。
・動的データ構造について
1.線形リスト構造(stackデータ構造)
[1]
[1.1] stackデータ構造の生成
条件1:挿入と削除のプログラムを作る
条件2:pueueではない
条件3:もし~ならばという風に使い分ける(if文)
[1.2] stackデータ構造については理解しています。しかし、プログラムの組み方がわかりません。
[1.3] プログラムの組み方がまったくわかりません。来週までなので早めの回答をお願いします。
[1.4] 今のままではプログラムを書いていただいてもわからないので詳しい説明があると幸いです。
[2]
[2.1] OS : Windows vista
[2.2] コンパイラ名 : VC++ ソフト名:visual stadio 2008
[3]
初心者ではないのですが1からプログラムを組むことはやったことはありませんので、初心者と同じぐらいです。ちなみにアルゴリズムとデータ構造という授業です。
問題は[1.1]ですが、下記のプログラムを少し変えるという話を聞きました。↓↓↓
#include stdafx.h
#include <stdio.h>
#include <stdlib.h>
void main()
{
struct tbox
{
int data;
struct tbox *point;
};
struct tbox *root, *work, *awork;
FILE *fpi;
int flag;
int workint;
int code;
fpi = fopen(data.dat , r);
root = NULL;
flag = 1;
while(flag)
{
if((code = fscanf(fpi,%d,&workint)) !=EOF)
{
work = (struct tbox *)malloc(sizeof(struct tbox));
work -> data = workint;
work -> point = NULL;
if (root == NULL)
root = work;
else
awork -> point = work;
awork = work;
}
else
flag = 0;
}
work = root;
while(work != NULL)
{
printf(%d\n, work -> data);
work = work -> point;
}
}
2.木構造(二分探索木)
[1]
[1.1] 二分探索木
条件1:いかに早く効率よく、データの集まりが一つのデータを探し出せるか
[1.2] プログラムの組み方がわかりません。
[1.3] プログラムの組み方がまったくわかりません。来週までなので早めの回答をお願いします。
[1.4] 今のままではプログラムを書いていただいてもわからないので詳しい説明があると幸いです。
[2]
[2.1] OS : Windows vista
[2.2] コンパイラ名 : VC++ ソフト名:visual stadio 2008
[3]
初心者ではないのですが1からプログラムを組むことはやったことはありませんので、初心者と同じぐらいです。ちなみにアルゴリズムとデータ構造という授業です。
こちらはこのようなプログラムとなっています。下記のプログラムをいじることで効率良くなるそうです。
#include stdafx.h
#include <stdio.h>
#include <stdlib.h>
struct treebox
{
struct treebox *leftpointer;
int data;
struct treebox *rightpointer;
};
struct treebox *work , *awork;
void searchtree()
{
if(awork -> data > work ->data)
{
if(awork -> leftpointer = NULL)
awork -> leftpointer = work;
else
{
awork = awork -> leftpointer;
searchtree();
}
}
else
{
if(awork -> rightpointer == NULL)
awork -> rightpointer = work;
else
{
awork = awork -> rightpointer;
searchtree();
}
}
}
void printtree(struct treebox *p)
{
if(p != NULL)
{
printtree(p -> leftpointer);
printf(%d\n , p ->data);
printtree(p ->rightpointer);
}
}
int main()
{
struct treebox *root;
int flag;
int c;
int workint;
root = (struct treebox *)malloc(sizeof(struct treebox));
root -> leftpointer = NULL;
scanf(%d,&root -> data);
root ->rightpointer = NULL;
awork = root;
flag = 1;
while(flag)
{
workint = scanf(%d , &c);
if((workint == EOF))
flag = 0;
else
{
work -> leftpointer = NULL;
work -> data = c;
work ->rightpointer =NULL;
searchtree();
awork = root;
}
}
awork = root;
printtree(awork);
}
・長文ですが、回答よろしくお願いします。アドバイスのほうもできればお願いします。
問題は2問あります。
・動的データ構造について
1.線形リスト構造(stackデータ構造)
[1]
[1.1] stackデータ構造の生成
条件1:挿入と削除のプログラムを作る
条件2:pueueではない
条件3:もし~ならばという風に使い分ける(if文)
[1.2] stackデータ構造については理解しています。しかし、プログラムの組み方がわかりません。
[1.3] プログラムの組み方がまったくわかりません。来週までなので早めの回答をお願いします。
[1.4] 今のままではプログラムを書いていただいてもわからないので詳しい説明があると幸いです。
[2]
[2.1] OS : Windows vista
[2.2] コンパイラ名 : VC++ ソフト名:visual stadio 2008
[3]
初心者ではないのですが1からプログラムを組むことはやったことはありませんので、初心者と同じぐらいです。ちなみにアルゴリズムとデータ構造という授業です。
問題は[1.1]ですが、下記のプログラムを少し変えるという話を聞きました。↓↓↓
#include stdafx.h
#include <stdio.h>
#include <stdlib.h>
void main()
{
struct tbox
{
int data;
struct tbox *point;
};
struct tbox *root, *work, *awork;
FILE *fpi;
int flag;
int workint;
int code;
fpi = fopen(data.dat , r);
root = NULL;
flag = 1;
while(flag)
{
if((code = fscanf(fpi,%d,&workint)) !=EOF)
{
work = (struct tbox *)malloc(sizeof(struct tbox));
work -> data = workint;
work -> point = NULL;
if (root == NULL)
root = work;
else
awork -> point = work;
awork = work;
}
else
flag = 0;
}
work = root;
while(work != NULL)
{
printf(%d\n, work -> data);
work = work -> point;
}
}
2.木構造(二分探索木)
[1]
[1.1] 二分探索木
条件1:いかに早く効率よく、データの集まりが一つのデータを探し出せるか
[1.2] プログラムの組み方がわかりません。
[1.3] プログラムの組み方がまったくわかりません。来週までなので早めの回答をお願いします。
[1.4] 今のままではプログラムを書いていただいてもわからないので詳しい説明があると幸いです。
[2]
[2.1] OS : Windows vista
[2.2] コンパイラ名 : VC++ ソフト名:visual stadio 2008
[3]
初心者ではないのですが1からプログラムを組むことはやったことはありませんので、初心者と同じぐらいです。ちなみにアルゴリズムとデータ構造という授業です。
こちらはこのようなプログラムとなっています。下記のプログラムをいじることで効率良くなるそうです。
#include stdafx.h
#include <stdio.h>
#include <stdlib.h>
struct treebox
{
struct treebox *leftpointer;
int data;
struct treebox *rightpointer;
};
struct treebox *work , *awork;
void searchtree()
{
if(awork -> data > work ->data)
{
if(awork -> leftpointer = NULL)
awork -> leftpointer = work;
else
{
awork = awork -> leftpointer;
searchtree();
}
}
else
{
if(awork -> rightpointer == NULL)
awork -> rightpointer = work;
else
{
awork = awork -> rightpointer;
searchtree();
}
}
}
void printtree(struct treebox *p)
{
if(p != NULL)
{
printtree(p -> leftpointer);
printf(%d\n , p ->data);
printtree(p ->rightpointer);
}
}
int main()
{
struct treebox *root;
int flag;
int c;
int workint;
root = (struct treebox *)malloc(sizeof(struct treebox));
root -> leftpointer = NULL;
scanf(%d,&root -> data);
root ->rightpointer = NULL;
awork = root;
flag = 1;
while(flag)
{
workint = scanf(%d , &c);
if((workint == EOF))
flag = 0;
else
{
work -> leftpointer = NULL;
work -> data = c;
work ->rightpointer =NULL;
searchtree();
awork = root;
}
}
awork = root;
printtree(awork);
}
・長文ですが、回答よろしくお願いします。アドバイスのほうもできればお願いします。
Re:みなさんの力をお貸しください
ご存知だとは思いますが、ここは「質問」掲示板です。
課題に対して、そのままの回答を得ることは期待しないでください。
プログラムの組み方がわからないとのことですが、まずプログラムを組めるところから始めましょう。
derorianさんが提示された上記プログラムをコンパイルする手順は分かりますか?
課題に対して、そのままの回答を得ることは期待しないでください。
プログラムの組み方がわからないとのことですが、まずプログラムを組めるところから始めましょう。
derorianさんが提示された上記プログラムをコンパイルする手順は分かりますか?
Re:みなさんの力をお貸しください
2問ありますが一つ目は
・動的データ構造
線形リスト構造
stackデータ構造の生成
挿入と削除を行うプログラムを作る
pueueではない
もし~ならばというふうに使い分ける
です。
・動的データ構造
線形リスト構造
stackデータ構造の生成
挿入と削除を行うプログラムを作る
pueueではない
もし~ならばというふうに使い分ける
です。
Re:みなさんの力をお貸しください
詳しくはわかりませんが大まかにならわかります。
そうですね。このプログラムはキューで作られているので、その内容をスタックに変えるのが一番の目的ですね
そうですね。このプログラムはキューで作られているので、その内容をスタックに変えるのが一番の目的ですね
Re:みなさんの力をお貸しください
> 詳しくはわかりませんが大まかにならわかります。
では判る範囲を「ソースコードにコメントを入れる形で」説明してください。
わからない部分は「目立つ形で」コメントを入れてください。
#derorianさんの不明な点を、ご自身と回答者の皆さんが
#認識する(させる)ことが目的です。
では判る範囲を「ソースコードにコメントを入れる形で」説明してください。
わからない部分は「目立つ形で」コメントを入れてください。
#derorianさんの不明な点を、ご自身と回答者の皆さんが
#認識する(させる)ことが目的です。
Re:みなさんの力をお貸しください
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
void main()
{
struct tbox //動的データ構造を作成
{
int data;//struct tboxに対する変数
struct tbox *point;
};
struct tbox *root, *work, *awork;
FILE *fpi;
int flag;
int workint;
int code;
fpi = fopen("data.dat" , "r");
root = NULL;
flag = 1;
while(flag)
{
if((code = fscanf(fpi,"%d",&workint)) !=EOF)
{
work = (struct tbox *)malloc(sizeof(struct tbox));//workのなかの変数を動的に領域をとる
work -> data = workint;//
work -> point = NULL;
if (root == NULL)//NULLになったら
root = work;//workの値をrootにいれる
else
awork -> point = work;//workとポインタをつなぐ
awork = work;//aworkにworkの値を入れる
}
else
flag = 0;
}
work = root;//rootの値をworkに入れる
while(work != NULL)//workがNULLになるまで繰り返す
{
printf("%d\n", work -> data);
work = work -> point;
}
}
わかるところ少なくてすいません
ポインタ変数どうしをつないでいくことしかわかりません
#include <stdio.h>
#include <stdlib.h>
void main()
{
struct tbox //動的データ構造を作成
{
int data;//struct tboxに対する変数
struct tbox *point;
};
struct tbox *root, *work, *awork;
FILE *fpi;
int flag;
int workint;
int code;
fpi = fopen("data.dat" , "r");
root = NULL;
flag = 1;
while(flag)
{
if((code = fscanf(fpi,"%d",&workint)) !=EOF)
{
work = (struct tbox *)malloc(sizeof(struct tbox));//workのなかの変数を動的に領域をとる
work -> data = workint;//
work -> point = NULL;
if (root == NULL)//NULLになったら
root = work;//workの値をrootにいれる
else
awork -> point = work;//workとポインタをつなぐ
awork = work;//aworkにworkの値を入れる
}
else
flag = 0;
}
work = root;//rootの値をworkに入れる
while(work != NULL)//workがNULLになるまで繰り返す
{
printf("%d\n", work -> data);
work = work -> point;
}
}
わかるところ少なくてすいません
ポインタ変数どうしをつないでいくことしかわかりません
Re:みなさんの力をお貸しください
> キューのデータ構造をスタックのデータ構造に変えるというものなのでキューで間違いないと思います
すみません、私の勘違いでした。
#睡魔のせいにしときます…
すみません、私の勘違いでした。
#睡魔のせいにしときます…
Re:みなさんの力をお貸しください
キューを意識してください。
上記、プログラムで入力データが例えば1,2,3順序だった場合、
各入力が行われた後で、root、work、aworkはどうなっていくかを考えてください。
#プログラムが組めなくても、紙と鉛筆があれば出来ます。
上記、プログラムで入力データが例えば1,2,3順序だった場合、
各入力が行われた後で、root、work、aworkはどうなっていくかを考えてください。
#プログラムが組めなくても、紙と鉛筆があれば出来ます。