たんほうこうチェーンテーブルそうさかんすう
構造体を定義します.
チェーンテーブル関数を作成するには、次の手順に従います.
スプレッドシート関数:
チェーンテーブル検索関数:
チェーンテーブルノード関数を削除するには、次の手順に従います.
チェーンテーブルノード関数を挿入するには、次の手順に従います.
チェーンテーブル関数を解放するには、次の手順に従います.
チェーンテーブルソート関数:
typedef struct stu
{
char num[10];
char name[12];
float score;
struct stu *next;
}STU;
チェーンテーブル関数を作成するには、次の手順に従います.
STU *create_link(STU *head,STU *p_new)
{
STU *p_mov=head;
if(head==NULL)
{
head=p_new;
p_new->next=NULL;
}
else
{
while(p_mov->next!=NULL)
p_mov=p_mov->next;
p_mov->next=p_new;
p_new->next=NULL;
}
return head;
}
スプレッドシート関数:
void print_link(STU *head)
{
STU *p_mov=head;
if(head==NULL)
printf(" !
");
else
{
while(p_mov!=NULL)
{
printf("\t%-5s %-6s %4.1f
",p_mov->num,p_mov->name,p_mov->score);
p_mov=p_mov->next;
}
}
}
チェーンテーブル検索関数:
void find_link(STU *head,char *name)
{
int flag=1;
STU *p_mov=head;
if(head==NULL)
printf(" !
");
else
{
while(p_mov!=NULL)
{
if(!strcmp(p_mov->name,name))
{
printf(" %s %s %.1f
",p_mov->num,p_mov->name,p_mov->score);
flag=0;
}
p_mov=p_mov->next;
}
if(flag)
printf(" !
");
}
}
チェーンテーブルノード関数を削除するには、次の手順に従います.
STU *delete_link(STU *head,char *name)
{
int flag=0;
STU *p_mov=head,*p_front=head;
if(head==NULL)
printf(" !
");
else
{
while(p_mov!=NULL)
{
if(!strcmp(p_mv->name,name))
{
flag=1;
break;
}
p_front=p_mov;//
p_mov=p_mov->next;
}
if(flag)
{
if(p_mov==head)
head=p_mov->next;
else
p_front->next=p_mov->next;//
free(p_mov);
}
else
printf(" !
");
}
return head;
}
チェーンテーブルノード関数を挿入するには、次の手順に従います.
STU *insert_link(STU *head,STU *p_in)
{
STU *p_mov=head,*p_front=NULL;
if(head==NULL)
printf(" !
");
else
{
while(strcmp(p_in->num,p_mov->num)==1&&p_mov->next!=NULL)
{
p_front=p_mov;
p_mov=p_mov->next;
}
if(strcmp(p_in->num,p_mov->num)!=1)
{
if(head==p_mov)//
{
p_in->next=head;
head=p_in;
}
else //
{
p_front->next=p_in;
p_in->next=p_mov;
}
}
else //
{
p_mov->next=p_in;
p_in->next=NULL;
}
}
return head;
}
チェーンテーブル関数を解放するには、次の手順に従います.
STU *free_link(STU *head)
{
STU *p_mov=head,*p_temp=NULL;
if(head==NULL)
printf(" !
");
else
{
while(p_mov!=NULL)
{
p_temp=p_mov->next; //
free(p_mov);
p_mov=p_temp; //
}
}
return NULL;
}
チェーンテーブルソート関数:
STU *sort_link(STU *head)
{
STU temp;
STU *p_mov=head,*p_front=head;
if(head==NULL)
printf(" !
");
else
{
while(p_front!=NULL)
{
p_mov=p_front->next;
while(p_mov!=NULL)
{
if(p_mov->score<p_front->score)
{
//
temp=*p_mov;
*p_mov=*p_front;
*p_front=temp;
//
temp.next=p_mov->next;
p_mov->next=p_front->next;
p_front->next=temp.next;
}
p_mov=p_mov->next;
}
p_front=p_front->next;
}
}
return head;
}