옵션 |
|
1 2 3 4 5 6 7 8 | struct age{ int tag; int age; char name[10]; int next; }; | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include<stdio.h> #include<string.h> #include<stdlib.h> #include"age.h" #define MAX 5 struct age Age[MAX]; int Root = -1; void age_init(); int age_get(); main(){ char get_str[40],name[10]; char *token = NULL; int i,j,k,age,re_val; age_init(); for(i=1;i<=MAX;i++){ fgets(get_str,sizeof(get_str),stdin); get_str[strlen(get_str)-1]='\0'; token = strtok(get_str," "); age = atoi(token); token = strtok(NULL," "); strcpy(name,token); re_val = age_get(); strcpy(Age[re_val].name,name); Age[re_val].age=age; Age[re_val].next=Root; if(i>=2){//여기가 정렬해줄 부분인데 도저히 잘 모르겠네요,,, for(j=0;j<i-1;j++){ for(k=j;k<i;k++){ if(strcmp(Age[j].name,Age[k].name)>0) Age[k].next=j; } } } } for(i=0;i<MAX;i++) printf(" T : %d , Age : %d, Name : %s, next : %d\n",Age[i].tag,Age[i].age,Age[i].name,Age[i].next); } void age_init(){//모든 배열에 tag를 0으로 만들어줍니다. int i; for(i = 0; i<MAX;i++) Age[i].tag=0; } int age_get(){//tag가 0인부분을 1로 바꿔주는 함수입니다. 바꿔줌으로 인해 그 자리에 삽입을 해 주는거죠 int i; for(i=0;;i++) if(Age[i].tag==0){ Age[i].tag=1; return i; } } | cs |