내 목록에서 노드를 찾고 삭제하는 데 문제가 있습니다. 여러 가지 방법을 시도했지만 지금까지는 제 코드입니다. 문제가 내 삽입물에 있거나 어쩌면 디스플레이 기능에 있는지 알 수 없습니까? 당신이 잃어버린 때문에, 나는 "거의C++ 이중 연결 목록 검색 및 제거
void removeStudent(int id)
{
node *trash = NULL;
node *current = head;
while (current!= NULL)
{
if (current->data.id == id)
{
trash = current;
current->prev->next = current->next;
current->next->prev = current->prev;
delete trash;
}
}
}
이 내 삽입 기능
void push(student s)
{
node *tmp = new node;
tmp->data = s;
tmp->next = head;
tmp->prev = NULL;
if (head == NULL)
{
head = tmp;
tail = tmp;
}
else
{
head->prev = tmp;
head = tmp;
}
}
입니다.이 학습 M과이
void display()
{
node *current = head;
while (current!=NULL)
{
cout << current->data.name << endl;
cout << current->data.GPA << endl;
cout << current->data.id << endl;
cout << current->data.university << endl;
current = current->next;
}
}
왜'node * trash = new node; '입니까? 이로 인해 메모리가 누수됩니다. – crashmstr
목록의 처음 또는 끝에 (또는 둘 다) 노드의 특별한 경우를 처리해야합니다. 그 힌트가 충분합니까? – Beta
'여러 가지 방법을 시도했습니다. '한 가지 길 밖에 없어서 종이에 적거나 글을 쓰는 방식입니다. 이와 같은 과제가 있으면 노드와 링크를 나타내는 상자와 선을 그려야합니다. 그런 다음 중간 노드를 연결 해제하고 두 개의 나머지 노드를 함께 연결하기 위해 수행해야 할 작업을 확인합니다. 그런 다음 종이에 쓴 내용을 시뮬레이션하는 코드를 작성합니다. – PaulMcKenzie