c言語宿題です..
■ このスレッドは過去ログ倉庫に格納されています
0001え
NGNG入れ替えをしないバブルソートのプログラムはどうすればいいんのですか??
0002デフォルトの名無しさん
NGNG意味がわからん
0003デフォルトの名無しさん
NGNGテーブルを使うってことか?
0004え
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007え
NGNGひとつの入れ替えのたびに構造体は3回コピーしている。
構造体のデータが大きかったらコピーしたくない。
コピーせずにバブルソートするにはどうしたらよいか?
というのが問題です。
0008デフォルトの名無しさん
NGNGいかなる入れ替えもせずにソートすることなど、神でもできまい。
もうちょっと条件がついてるだろ、条件が。
おまえ、問題をちゃんと理解してないんじゃないか?
0009デフォルトの名無しさん
NGNGお前は何歳で、身分(大学生とか専門学生とか)は
何だ?その日本語能力はヤバすぎるぞ。
0010え
NGNG0011デフォルトの名無しさん
NGNG「バブルソート」っつーのがミソだろ?
じゃあ、リンクリスト使えや、ゴルァ!
それでも、論理的には「入れ替え」てるぞ!
0012え
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG上下に配列の余裕が一杯あればできるじゃんか。
0015え
NGNG0016え
NGNG0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNG同意
http://piza2.2ch.net/test/read.cgi/tech/1003286513/l50
↑のスレといい、単発質問スレに答えるなよって思う。
0020デフォルトの名無しさん
NGNGいいんだよ。駄目になればこっちの業界にも
来なくなるだろうから。
>>1
ほれ。これがポインタを使ったやりかただ。
多分字下げが変になるけど気にするな。
#include <stdio.h>
#define NUMBER (10)
struct foo {
int a;
int b;
int c;
};
int main (void)
{
struct foo n[NUMBER];
struct foo *p[NUMBER];
struct foo *temp;
int i;
int j;
for (i = 0; i < NUMBER; i++) {
n[i].a = rand() % 1000;
p[i] = &n[i];
printf("%d ", n[i].a);
}
printf("\n");
for (i = NUMBER - 1; i > 0; i--) {
for (j = 0; j < i; j++) {
if (p[j]->a > p[j + 1]->a) {
temp = p[j];
p[j] = p[j + 1];
p[j + 1] = temp;
}
}
}
for (i = 0; i < NUMBER; i++) {
printf("%d ", p[i]->a);
}
printf("\n");
return 0;
}
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG来て損した気分にならないか?
0023デフォルトの名無しさん
NGNG1はプログラムの授業中に居眠りでもしていたんだろう。
1はプログラムの授業中をサボっていたのだろう。
1はプログラムの実習中にどこぞのエロWEBでも見ていたのだろう。
1はプログラムの授業中友人との話に夢中だったのだろう。
1の周りには、宿題について聞けるような友人がいないのだろう。
こんなスレ立てる奴はどうかしている。
こんな質問に答える奴もどうかしてる。
まさに「スレ立てるまでもない質問」だ。
宿題わかりません、宿題おしえてくださいスレ見るたびにうんざりする。
そんなことは友人か先生に聞け。
ああ、ごめん。優秀な友人はいないのか。
先生も相手にしてくれないからここで聞いているのか。
だったらこっちにいけバカ。
http://piza2.2ch.net/test/read.cgi/tech/1001998049/l50
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG社長またそんなこと! 言わないで下さいよもう!!
0027リンクリスト 1/3
NGNG#include <stdlib.h>
#define NUMBER (10)
struct _node {
struct _node *next;
struct _node *prev;
void *data;
};
struct _list {
struct _node *first;
struct _node *last;
};
struct _list *list_new();
void list_delete(struct _list *list);
int list_add_last(struct _list *list, void *data);
struct foo {
int a;
int b;
int c;
};
void list_foo_bubble_sort(struct _list *list);
void list_foo_print(struct _list *list);
int is_foo_swap(struct foo *f1,struct foo *f2);
int main (void)
{
struct foo f[NUMBER];
struct _list *list;
int i;
if( ! (list = list_new()) ){
printf("ERROR : list_new\n");
return -1;
}
for (i = 0; i < NUMBER; i++) {
f[i].a = rand() % 1000;
f[i].b = rand() % 1000;
f[i].c = rand() % 1000;
if(list_add_last(list,&f[i])){
printf("ERROR : list_add_last (f[%d])\n",i);
list_delete(list);
return -1;
}
}
list_foo_print(list);
list_foo_bubble_sort(list);
list_foo_print(list);
list_delete(list);
return 0;
}
0028リンクリスト 2/3
NGNG{
if(f1->a > f2->a)
return 1;
else
return 0;
}
void list_foo_bubble_sort(struct _list* list)
{
struct _node *target;
struct _node *max;
if(list==NULL || list->first==NULL)
return;
printf("########################\n");
printf("### list_foo_bubble_sort\n");
printf("########################\n");
max = list->first;
while(max->next){
target = max->next;
if( ! is_foo_swap(max->data,target->data)){
max = target;
continue;
}
while(target->prev){
if(is_foo_swap(target->prev->data,target->data)){
target->prev->next = target->next;
if(target->next) target->next->prev = target->prev;
target->next = target->prev;
target->prev = target->next->prev;
target->next->prev = target;
if(target->prev) target->prev->next = target;
}else{
break;
}
}
}
}
0029リンクリスト 3/3
NGNG{
struct foo *f;
struct _node *current;
if(list==NULL)
return;
printf("===== struct foo =====\n");
current = list->first;
while(current){
f = current->data;
printf("foo : a = %d, b = %d, c = %d\n", f->a,f->b,f->c);
current = current->next;
}
}
struct _list *list_new()
{
struct _list *list;
if(list = malloc(sizeof(struct _list))){
list->first = NULL;
list->last = NULL;
}
return list;
}
void list_delete(struct _list *list)
{
struct _node *next;
struct _node *current;
if(list==NULL)
return;
current = list->first;
while(current){
next = current->next;
free(current);
current = next;
}
}
0030げ、まだあったリンクリスト 4/3
NGNG{
struct _node *node;
if(list==NULL || data==NULL)
return -1;
if(! (node = malloc(sizeof(struct _node))))
return -1;
node->next = NULL;
node->prev = NULL;
node->data = data;
if(list->last){
list->last->next = node;
node->prev = list->last;
list->last = node;
}else{
list->first = node;
list->last = node;
}
return 0;
}
0031デフォルトの名無しさん
NGNGに、is_swap()の関数ポインタ渡せるようにすれば、汎用的になるYO。
0032デフォルトの名無しさん
NGNG>>29のlist_delete()、nodeしか開放してない。
list自身を消し忘れてる。鬱。
■ このスレッドは過去ログ倉庫に格納されています