みなさんの力をお貸しください
Posted: 2010年7月15日(木) 00:04
来週までに出さなければいけない課題がわかりません。
問題は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);
}
・長文ですが、回答よろしくお願いします。アドバイスのほうもできればお願いします。