C言語でLinuxを使っています。メモリを確保したりするプログラムなのですが、以下のプログラムを修正して 、5秒間で何回の入れ替えを行えるかを計測できるようにしてもらいたいです。初心者なもので説明不足ですいません。参考にしたらいいサイトなどでも、何でも良いので手助けをお願いしたいです。
お願いします
#include <stdlib.h> #define VALUE_SIZE (1 * 1024 * 1024) struct array_data { int value[VALUE_SIZE]; }; struct list_data { struct list_data* next; int value[VALUE_SIZE]; }; void dump_array(struct array_data* data, int num) { int i; for (i = 0; i < num; ++i) { printf("%d\n", data[i].value[0]); } } void swap_array(struct array_data* array, int n) { struct array_data tmp; tmp = array[n]; array[n] = array[n + 1]; array[n + 1] = tmp; } void eval_array(int num) { struct array_data *array; int n, i; // init if ((array = malloc(sizeof(struct array_data) * num)) == NULL) { perror("malloc"); exit(1); } for (i = 0; i < num; ++i) { array[i].value[0] = i; } //dump_array(array, num); // swap n = (rand() % (num - 2)) + 1; swap_array(array, n); dump_array(array, num); free(array); } void dump_list(struct list_data* head) { struct list_data *ld; ld = head; while (ld != NULL) { printf("%d\n", ld->value[0]); ld = ld->next; } } void swap_list(struct list_data* head, int n) { } void eval_list(int num) { struct list_data *head, *ld; int n, i; // init if ((head = malloc(sizeof(struct list_data) * num)) == NULL) { perror("malloc"); exit(1); } ld = head; for (i = 0; i < num - 1; ++i) { ld->next = ld + 1; ld->value[0] = i; ld = ld->next; } ld->next = NULL; ld->value[0] = num - 1; //dump_list(head); // swap n = (rand() % (num - 2)) + 1; swap_list(head, n); dump_list(head); free(head); } int main(int argc, char *argv[]) { eval_array(10); //eval_list(10); exit(0); }
実行結果 $./koj.c
0
1
2
3
4
5
6
7
9
8
回答3件
あなたの回答
tips
プレビュー