冒泡排序链表C中字符串,Ints和Floats的结构

时间:2016-05-11 04:39:22

标签: c sorting structure

我在链接列表的冒泡排序方面遇到问题,我通过从文件中读取来填充链接列表(如果需要,我可以包含此函数和文件)我没有收到任何编译器错误;但是,当我运行程序时,链接列表根本不会自行排序。使用调试语句我发现程序将进入交换函数,但它没有重新排列结构部分的值。有没有人对此有任何解决方案?我已经包含了我的代码,用于定义问题出现时冒泡排序和交换功能的结构和代码。

 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;
    }

0 个答案:

没有答案