メモリの使用量がわかりません!!
Posted: 2011年7月08日(金) 14:26
とあるプログラムも作りました
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
typedef struct data Data;
typedef struct data *DataP;
struct data{
int val;
DataP prev;
};
DataP add_data(int i,DataP last);
void print_data(DataP last);
void free_list(DataP last);
int main()
{
int i,k,f,n;
DataP last=NULL;
for(i=2;i<=MAX;i++)
{
k=0;
f=i/2;
for(n=2;f>=n;n++)
{
if((i%n)==0)
{
k= 1;
break;
}
}
if(k==0)
{
printf("%d\n",i);
}
last=add_data(i,last);
}
print_data(last);/*outputの表示を逆にする*/
exit(0);
}
DataP add_data(int i, DataP last)
{
DataP new;
DataP n=last;
while(n!=NULL){
if(i % n->val==0){ /*検索をやめる*/
break;
}
n=n->prev;
}
if(n==NULL){ /*素数なのでリストに加える*/
if((new=(DataP)malloc(sizeof(Data)))==NULL){
fprintf(stderr,"data allocation error !\n");
exit(1);
}
new->val=i;
new->prev=last;
}else{ /*そのまま返す*/
new=last;
}
return new;
}
void print_data(DataP last)
{
while(last!=NULL){
printf("output data %d\n",last->val);
last=last->prev;
}
}
void free_list(DataP last)
{
DataP olast;
while(last!=NULL){
olast=last;
last=last->prev;
free(olast);
}
}
一応、コンパイルしてうまく言ったのですが、これに計算量とメモリの使用量を調べよといわれたのですが、正直どうすればいいのかわかりません。計算量とメモリの使用量がわかるソフトもしくは定義を教えてほしいです。箱を用意して考えろといわれたのですが、何のことかわかりません
よろしくお願いします”!!
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
typedef struct data Data;
typedef struct data *DataP;
struct data{
int val;
DataP prev;
};
DataP add_data(int i,DataP last);
void print_data(DataP last);
void free_list(DataP last);
int main()
{
int i,k,f,n;
DataP last=NULL;
for(i=2;i<=MAX;i++)
{
k=0;
f=i/2;
for(n=2;f>=n;n++)
{
if((i%n)==0)
{
k= 1;
break;
}
}
if(k==0)
{
printf("%d\n",i);
}
last=add_data(i,last);
}
print_data(last);/*outputの表示を逆にする*/
exit(0);
}
DataP add_data(int i, DataP last)
{
DataP new;
DataP n=last;
while(n!=NULL){
if(i % n->val==0){ /*検索をやめる*/
break;
}
n=n->prev;
}
if(n==NULL){ /*素数なのでリストに加える*/
if((new=(DataP)malloc(sizeof(Data)))==NULL){
fprintf(stderr,"data allocation error !\n");
exit(1);
}
new->val=i;
new->prev=last;
}else{ /*そのまま返す*/
new=last;
}
return new;
}
void print_data(DataP last)
{
while(last!=NULL){
printf("output data %d\n",last->val);
last=last->prev;
}
}
void free_list(DataP last)
{
DataP olast;
while(last!=NULL){
olast=last;
last=last->prev;
free(olast);
}
}
一応、コンパイルしてうまく言ったのですが、これに計算量とメモリの使用量を調べよといわれたのですが、正直どうすればいいのかわかりません。計算量とメモリの使用量がわかるソフトもしくは定義を教えてほしいです。箱を用意して考えろといわれたのですが、何のことかわかりません
よろしくお願いします”!!