|
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int n, i, num;
Memo1->Lines->Add("enter list sizd");
AnsiString gop;
gop = Edit1->Text;
Memo1->Lines->Add(gop); //노드 개수 입력
if (n<1 || n > 100) //1=<n=<100
{
Memo1->Lines->Add(("out of range:")+StrToInt(gop));
}
//헤드 노드 생성, data =0
head = (list_pointer)malloc(sizeof(node));
head -> data = 0;
head -> link = NULL;
for (i = 0; i < n; i++) //n+1개의 노드로 구ㅗ성되 연결 리스트 구성
{
My_insert(&head, i+1);
}
My_print_list(head); //리스트의 내용 출력
Memo1->Lines->Add("enter data to delete"); //입력된 데이털글 포함한 노드를 리스트에서 삭제
gop = Edit2->Text;
Memo1->Lines->Add(gop);
My_delete(&head, num);
My_print_list(head); //리스트의 내용을 다시 출력
}
void __fastcall TForm1::My_insert(list_pointer *ptr, int value) //헤드 노드 바로 다음에 새로운 노드를 삽입하는 함수
{
list_pointer temp;
temp = (list_pointer)malloc(sizeof(node));
temp -> data = value;
temp -> link = (*ptr) -> link;
(*ptr)->link=temp;
}
void __fastcall TForm1::My_delete(list_pointer *ptr, int value) //전달 받은 데이터와 같은 값을 갖는 노드를 삭제하는 함수
{
list_pointer lead, trail;
trail = *ptr;
lead = (*ptr)->link;
for(;lead;)
{
if(lead->data == value) //노드 삭제
{
trail->link = lead->link;
free(lead);
return ;
}
else //다음 노드로 진행
{
trail=lead;
lead=lead->link;
}
}
}
void __fastcall TForm1::My_print_list(list_pointer ptr) //리스트의 내용을 출력하는 함수
{
Memo1->Lines->Add("data in list");
for (ptr = ptr->link; ptr; ptr=ptr->link)
{
Memo1->Lines->Add(ptr->data);
}
}
오류는 무한 반복이 됩니다...
|