이 코드 부분에 문제가 있습니다. 내 목표는 이중 연결된 목록을 뒤집는 것입니다. 반전 된 목록을 인쇄하려고하면 쓰레기 값이 표시됩니다.이중 링크 목록 반전 - 가비지 데이터 인쇄
typedef struct node{
int val;
struct node* prev;
struct node* next;
}Node;
typedef struct list{
Node* head;
Node* tail;
}List;
void pushFront(List* l, Node* node){
if(l->head == NULL){
l->head = node;
l->tail = node;
l->tail->next = NULL;
}else{
l->head->prev = node;
node->next = l->head;
l->head = node;
}
}
void printList(List* list){
Node *ptr = list->head;
while(ptr != NULL){
printf("%i ",ptr->val);
ptr = ptr->next;
}
puts("");
free(ptr);
}
void reverse(List* lista){
Node* ptr = lista->head;
Node* temp = NULL;
while(ptr != NULL){
temp = ptr->prev;
ptr->prev = ptr->next;
ptr->next = temp;
ptr = ptr->prev;
}
if(temp != NULL)
lista->head = temp->prev;
free(ptr);
free(temp);
}
출력 I가 나타날
오리지널리스트 : 1 2 3 4 5 6 7
반전리스트 1 8,532,616 3 4 5 6 7 8,528,368 2,002,618,240
'경우 (! 온도 = NULL) lista-> 헤드 = temp-> 이전,'응? 이것은 무엇을 하는가? 목록에 헤드 포인터 *와 꼬리 poiner *가 있는데, 어떻게해야합니까? –
'printList'에서 완료되면'free (ptr)'를 호출합니다. 이것은'free (NULL)'과 아무런 관련이 없습니다. 아무 것도하지 않지만 어떤 목적으로도 필요하지는 않습니다. –