K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>線形リストをつくったのですが、リストに値をセットした後連結リストをソートしたい >のですが、わかりません。どなたか教えてください。 >ソース(free用関数は後で作ります。): >#include <stdio.h> >#include <stdlib.h> >#include <string.h> >typedef struct DATA DATA; > >struct DATA >{ > DATA * next; > char * name; > int math; > int language; > int sum; >}; >#define MAX 256 >void listSort(DATA *top); >DATA* newnode(){ > DATA *p; > p=malloc(sizeof(DATA)); > p->next=NULL; > return p; >} >int SUM(DATA *data) >{ > return data->language+data->language; >} >void add(DATA *p,char *c,int lang,int math){ > while(p->next != NULL){ > p= p->next; > } > p->math = math; > p->language = lang; > p->sum = SUM(p); > p->name=malloc(strlen(c)+1); > strcpy(p->name,c); > p->next=newnode(); >} > > >void ShowData(DATA *data) >{ > FILE *fp = fopen("result.txt","w"); > DATA *temp; > for(temp = data; temp->next;temp= temp->next){ > printf("name : %s, language : %d, math : %d, sum :%d \n",temp->name,temp->language,temp->math,temp->sum); > } > for(temp = data; temp->next;temp= temp->next){ > fprintf(fp,"name : %s, language : %d, math : %d, sum :%d \n",temp->name,temp->language,temp->math,temp->sum); > } > fclose(fp); >} >int main() >{ > char data[MAX] = {'\0'}; > char ctemp[100] = {'\0'}; > int m,l; > FILE *fp = fopen("data.txt","r"); > char *n; > DATA *top = malloc(sizeof(DATA)); > > top->next = NULL; > while(fgets(data,MAX,fp)){ > if(n = strchr(data,'\n')) > *n = '\0'; > > sscanf(data,"%s%d%d",ctemp,&m,&l); > > > add(top,ctemp,l,m); > } > listSort(top); > ShowData(top); > > return 0; >} >void listSort(DATA *top) >{ >//ここのしょりがわかりません >//ちなみにsumで比較 >}
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!