我在链接列表的冒泡排序方面遇到问题,我通过从文件中读取来填充链接列表(如果需要,我可以包含此函数和文件)我没有收到任何编译器错误;但是,当我运行程序时,链接列表根本不会自行排序。使用调试语句我发现程序将进入交换函数,但它没有重新排列结构部分的值。有没有人对此有任何解决方案?我已经包含了我的代码,用于定义问题出现时冒泡排序和交换功能的结构和代码。
struct character { /*define character_t structure*/
char fname[STRSZ];
char lname[STRSZ];
int seas;
char state;
float height;
struct character *next;
};
typedef struct character character_t;
void bubbleSort(character_t *start){
int swapped,i;
character_t *ptr1;
character_t *lptr = NULL;
do{
swapped=0;
ptr1=start;
while(ptr1->next!=lptr)
{
if(strcmp(ptr1->fname,ptr1->next->fname)>0)
{
swap(ptr1,ptr1->next);
}
ptr1=ptr1->next;
}
lptr=ptr1;
}
while(swapped);
}
void swap(struct character *a,struct character *b){
char tfname[898]=" ";
char tlname[898]= " ";
int tseas;
char tstate;
float theight;
strcpy(tfname,a->fname);
strcpy(a->fname,b->name);
strcpy(b->fname,tfname);
strcpy(tfname,a->fname);
strcpy(a->fname,b->fname);
strcpy(b->fname,tfname);
tseas=a->seas;
a->seas=b->seas;
b->seas=tseas;
tstate=a->state;
a->state=b->state;
b->state=tstate;
theight=a->height;
a->height=b->height;
b->height=theight;
}