2016-07-12 3 views
0

이것은 학생 기록이있는 링크 된 목록의 시작 부분에서 삭제하기위한 코드입니다. 링크 된 목록의 시작 부분에서 삭제

int delete (struct student **q) { 
     struct student *current; 
     current=(struct student *)malloc(sizeof(struct student)); 
     current=head; 
     head=current->link; 
     free(current); 
     //display(current); 
     return 1; 
    } 

은 삭제 후 에만 ID가 0

before deletion 
    ID  Name Gender 
    1 Yazhini Female 
    2  Anu Female 
    3  Janavi Female 
    4 Haritha Female 

로 변경

struct student 
{ 
    int id; 
    char name[10]; 
    char gender[10]; 
    struct student * link; 
}*head; 

하지만 그 대신 전체 기록을 삭제하는 구조입니다

ID  Name Gender 
    0 Yazhini Female 
    2  Anu Female 
    3  Janavi Female 
    4 Haritha Female 
+0

'deletig' ... 저게 뭐죠? –

+0

['malloc()'과'C'의 패밀리의 반환 값을 왜 던지지 말아야하는지에 대한이 토론을보십시오.] (http://stackoverflow.com/q/605845/2173917). –

+0

[___MCVE___] (http://stackoverflow.com/help/mcve)를 만드시겠습니까? –

답변

0

장난 ction 특 다음 방법 다음 함수로서

int delete(struct student **head) 
{ 
    int success = *head != NULL; 

    if (success) 
    { 
     struct student *current = *head; 
     *head = current->link; 
     free(current); 
    } 

    return success; 
} 

보일 수 그것을 노드에 먼저 메모리가 할당 및 어드레스 가변 전류

current=(struct student *)malloc(sizeof(struct student)); 
할당되어 있으므로, 적어도 메모리 누출을 가지고

이 변수가 다시 할당됩니다.

또한 매개 변수 q가 무엇인지 의미하지 않습니다.

+0

이 작품을 .. 감사합니다. soo much @vlad – aish

+0

@aish 전혀. :) –

관련 문제