프잘알 프갤 성님들 안녕하심까 질문하나 오지게 박겠습니다.

제가 링크드리스트랑 파일입출력을 활용해서 학생자료 관리 프로그램을 만드는데 연결리스트에서 데이터 지우는거를 모르겠습니다. 제 빡머가리로는 아무리 생각해도 안떠오르네요 프갤 성님들의 도움이 필요합니다람쥐

#include <stdio.h>

#include <stdlib.h>

#include <string.h>


struct student             //linked list

{

char name[30];

char ID_num[30];

char major[30];

struct student *next;

};


struct student *first = NULL;

struct student *current = NULL;

struct student *previous = NULL;


void ADD();          //prototype

void DELETE();

void EDIT();

void PRINT_ALL();

void SEARCH();


FILE *pfile = NULL;        //file pointer


/* 메인 함수 */ 

int main (void)

{

pfile = fopen("student.txt", "r");          //파일에서 데이터 읽어옴  

for( ; ; )

{

current = (struct student*) malloc(sizeof(struct student));

if(first == NULL)

first = current;

if(previous != NULL)

previous->next = current;

if(fscanf(pfile, "%s", current->name) == EOF)

break;

fscanf(pfile, "%s", current->ID_num);

fscanf(pfile, "%s", current->major);

current->next = NULL;

previous = current;

}


fclose(pfile);

int select = 0;

printf(">> Student Management System <<\n\n");

for( ; ; )

{

printf("========Menu========\n");           //메뉴 선택  

printf("1. Add\n"

   "2. Delete\n"

   "3. Modify\n"

   "4. Search\n"

   "5. Display all\n"

   "6. End program\n");

printf("====================\n");

   

printf("Select a function >> ");

scanf("%d", &select);

switch (select)

{

case 1:

ADD();

break;

case 2:

DELETE();

break;

case 3:

EDIT();

break;

case 4:

SEARCH();

break;

case 5:

PRINT_ALL();

break;

case 6:

return 0;

default :

printf("incorrect input");

break;

}

}

return 0;

}

/*   함수 정의  */ 

void ADD(void)

{

pfile = fopen("student.txt", "a");

current = (struct student*) malloc(sizeof(struct student));

if(first == NULL)

first = current;

if(previous != NULL)

previous->next = current;

printf("Enter name: ");

scanf("%s", current->name);

fprintf(pfile, "%s ", current->name);

printf("Enter ID number: ");

scanf("%s", current->ID_num);

fprintf(pfile, "%s ", current->ID_num);

printf("Enter major: ");

scanf("%s", current->major);

fprintf(pfile, "%s\n", current->major);

current->next = NULL;

previous = current;

fclose(pfile);

printf("Add completed!\n");

}


void DELETE(void)

{

char name_del[30];

printf("Enter the name of the student you want to delete: ");

scanf("%s", name_del);

current = first;

while(current != NULL)

{

if(strcmp(name_del,current->name) == 0)   

{

while(current != NULL)

{

previous->next = current->next;

current = previous->next;

}

}

previous = current;

current = previous->next;

}

pfile = fopen("student.txt", "w");

current = first;

while(current->name != NULL)

{

fprintf(pfile, "%s %s %s\n", current->name, current->ID_num, current->major);

current = current->next;

}

previous = current;

fclose(pfile);

printf("Delete completed!");

}

void EDIT(void)

{

char name_edit[30];

printf("Enter the name of the student you want to modify: ");

scanf("%s", name_edit);

current = first;

while(current != NULL)

{

if(strcmp(name_edit, current->name) == 0)

{

printf("Enter new name: ");

scanf("%s", current->name);

printf("Enter new ID number: ");

scanf("%s", current->ID_num);

printf("Enter new major: ");

scanf("%s", current->major);

}

previous = current;

current = previous->next;

}

pfile = fopen("student.txt", "w");

current = first;

while(current->name != NULL)

{

fprintf(pfile, "%s %s %s\n", current->name, current->ID_num, current->major);

current = current->next;

}

previous = current;

fclose(pfile);

}


void SEARCH(void)

{

char name_search[30];

printf("Enter the name of student you want to search: ");

scanf("%s", name_search);

current = first;

while(current != NULL)

{

if(strcmp(name_search, current->name) == 0)

{

printf("%s %s %s\n", current->name, current->ID_num, current->major);

}

previous = current;

current = previous->next;

}

}


void PRINT_ALL(void)

{

current = first;

while(current != NULL)

{

printf("%s %s %s\n", current->name, current->ID_num, current->major);

previous = current;

current = previous->next;

}

}