双方向リストのソート関数を作ろうと思ってるのですが,

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
夏ミカン

双方向リストのソート関数を作ろうと思ってるのですが,

#1

投稿記事 by 夏ミカン » 15年前

typedef struct _list{
struct _list *next;
struct _list *prev;
char Student_Number[50];
char Family_Name[50];
char First_Name[50];
char Tel_Number[50];
char Post_Number[50];
}List;


List *header_Copy;


void Sort(List *p){ //pはheader_Copyを引数としています
List *q;
q=(List*)malloc(sizeof(List));
if(q==NULL) exit(1);

while(p->next!=header_Copy){
p=p->next;
q=p->next;
while(q->next!=header_Copy){
if(strcmp(p->Student_Number,q->Student_Number)>0){
p->prev->next=q;
q->prev=p->prev;
q->next->prev=p;
p->next=q->next;
q->next=p;
p->prev=q;
}
q=q->next;
}

}
}


このような感じにしたのですが、うまくいきません

よければ、教えてください

実行結果はheader_Copyの要素が下の時、ループからぬけないです

学籍番号 e
氏 e
名 e
電話番号 e
郵便番号 e

学籍番号 t
氏 e
名 e
電話番号 e
郵便番号 e

header_Copyが下の時

学籍番号 t
氏 e
名 e
電話番号 e
郵便番号 e

学籍番号 e
氏 e
名 e
電話番号 e
郵便番号 e

ソート結果は

学籍番号 t
氏 e
名 e
電話番号 e
郵便番号 e

学籍番号 e
氏 e
名 e
電話番号 e
郵便番号 e

となります、すみません、よろしくお願いします
画像

たかぎ

Re:双方向リストのソート関数を作ろうと思ってるのですが,

#2

投稿記事 by たかぎ » 15年前

質問は何でしょうか?
それとも雑談?

夏ミカン

Re:双方向リストのソート関数を作ろうと思ってるのですが,

#3

投稿記事 by 夏ミカン » 15年前

すみません、間違えてえんたーをおして不完全なまま投票されました^^;

たいちう

Re:双方向リストのソート関数を作ろうと思ってるのですが,

#4

投稿記事 by たいちう » 15年前

デバッグしてみようと思ったけど、header_Copyをどのように使うつもりなのかが判らない。
ループから抜けない、という状況を再現できる完全なソースコードを添付してください。

閉鎖

“C言語何でも質問掲示板” へ戻る