たんほうこうチェーンテーブルそうさかんすう


構造体を定義します.
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; }