5.2. 박인서 ¶
- bucket sort
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LEN 5
typedef struct data{
char * student;
struct data * next;
}stu;
void push(stu * data,char * val)
{
stu * temp=(stu *)malloc(sizeof(stu));
temp->student=val,temp->next=NULL;
while(data->next!=NULL) data=data->next;
data->next=temp;
}
void print(stu * data)
{
if(data->next==NULL) return;
printf("%s : ",data->student);
while(data->next->next!=NULL)
{
data=data->next;
printf("%s, ",data->student);
}
printf("%s\n",data->next->student);
}
int main()
{
stu data[8];
char * key=(char *)malloc(sizeof(char)*3);
char * value[LEN];
int i;
data[0].student="A+",data[1].student="A0";
data[2].student="B+",data[3].student="B0";
data[4].student="C+",data[5].student="C0";
data[6].student="D+",data[7].student="D0";
for(i=0;i<8;i++) data[i].next=NULL;
for(i=0;i<LEN;i++) value[i]=(char *)malloc(sizeof(char)*100);
for(i=0;i<LEN;i++)
{
printf("insert %d key\n",i+1);
scanf("%s",key);
printf("insert %d value\n",i+1);
scanf("%s",value[i]);
if(!strcmp(key,"A+")) push(&data[0],value[i]);
if(!strcmp(key,"A0")) push(&data[1],value[i]);
if(!strcmp(key,"B+")) push(&data[2],value[i]);
if(!strcmp(key,"B0")) push(&data[3],value[i]);
if(!strcmp(key,"C+")) push(&data[4],value[i]);
if(!strcmp(key,"C0")) push(&data[5],value[i]);
if(!strcmp(key,"D+")) push(&data[6],value[i]);
if(!strcmp(key,"D0")) push(&data[7],value[i]);
}
for(i=0;i<8;i++) print(&data[i]);
return 0;
}
5.3. 이원준 ¶
print랑 pop은 없슴다.
#include<stdio.h>
#include<string.h>
typedef struct _norm{
char *name;
struct _norm *next;
}norm;
typedef struct _grade{
char grade[3];
struct norm *head;
}grade;
void push(grade *head, char key[3], char *name){
char *temp = (char *)malloc(sizeof(name) * strlen(name));
norm* dir;
int num;
int i;
for (i = 0; i < 8; i++){
if (strcmp(head[i].grade, key) == 0){
num = i;
break;
}
}
dir = head[i].head;
strcpy(temp, name);
norm *ntemp = (norm *)malloc(sizeof(norm));
ntemp->name = temp;
ntemp->next = NULL;
if (dir == NULL){
head[i].head = ntemp;
return;
}
while (dir->next != NULL){
dir = dir->next;
}
dir->next = ntemp;
}
void print_all(grade *head){
int i;
for (i = 0; i < 8; i++){
if (head[i].head == NULL){
printf("없어요.\n");
continue;
}
}
}
void main(){
grade head[8];
norm* temp;
int i, j;
for (i = 0; i < 8; i++){
head[i].head = NULL;
head[i].grade[0] = 'A' + (i/2);
head[i].grade[2] = '\0';
if (i % 2 == 0)
head[i].grade[1] = '0';
else
head[i].grade[1] = '+';
}
head->head = NULL;
push(head, "A+", "lee");
push(head, "A+", "kim");
temp = head[1].head;
printf("%s", temp->name);
printf("%s", temp->next->name);
}










