링크 노드 의 증가 와 삭제
1577 단어 알고리즘 과 데이터 구조
1. 링크 정의
struct ListNode{
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL){}
};
2. 링크 끝 에 노드 추가
해결 방향: 원래 의 링크 는 빈 링크 와 비 공 링크 의 상황 으로 나 뉜 다.
특히 주의: 함수 의 첫 번 째 매개 변수 head 는 지침 을 가리 키 는 지침 입 니 다. 빈 링크 에 노드 를 삽입 할 때 새로 삽 입 된 노드 는 링크 의 헤드 지침 입 니 다. 이때 헤드 지침 을 바 꿀 수 있 기 때문에 head 매개 변 수 를 지침 의 지침 으로 설정 해 야 합 니 다. 그렇지 않 으 면 이 함수 head 는 여전히 빈 지침 입 니 다.
//
void AddtoListNodeTail(ListNode** head, int value){
ListNode* newNode = new ListNode(value);
if (*head == NULL){
*head = newNode;
}
else{
ListNode* pNode = *head;
while (pNode->next != NULL)
pNode = pNode->next;
pNode->next = newNode;
}
}
3. 링크 에서 지정 한 값 을 가 진 첫 번 째 노드 를 찾 아 이 노드 를 삭제 합 니 다.
해결 방향: 두 가지 상황 으로 나 뉜 다.
1) 삭제 할 값 은 두 노드 에 있 음
2) 삭제 할 값 이 끝 점 에 없 음
//
void RemoveFirstValue(ListNode **head, int value){
if (head == NULL || *head == NULL) return;
ListNode* RemoveNode = NULL;
//
if ((*head)->val == value){
RemoveNode = *head;
*head = (*head)->next;
}
//
else{
ListNode *node = *head;
while (node->next != NULL && node->next->val != value){
node = node->next;
}
if (node->next != NULL && node->next->val == value){
RemoveNode = node->next;
node->next = node->next->next;
}
}
if (RemoveNode != NULL){
delete RemoveNode;
RemoveNode = NULL;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
데이터 구조의 링크 의 실현글 목록 소개 실현 1. 프로필 동적 배열, 스 택 과 대열 의 바 텀 은 모두 정적 배열 에 의존 하고 resize 로 고정 용량 문 제 를 해결한다.그리고 링크 는 진정한 동적 데이터 구조 이다 2. 실현...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.