데이터 구조지식 포인트순환 링크 & 더 블 링크
단일 체인 표 와 대체적으로 다 르 지 않 지만 다음 과 같은 두 가지 주의 가 필요 합 니 다. (1) 마지막 노드 의 지침 도 메 인 은 반드시 머리 결점 을 가리 켜 야 순환 할 수 있 습 니 다. (주의, 데이터 가 저 장 된 첫 번 째 노드 가 아 닌 데이터 헤드 결점 을 가리 키 는 것 을 가리 키 는 것 입 니 다)
(2) 머리핀 이 아 닌 꼬리 지침 을 사용 하여 체인 시 계 를 표시 합 니 다. 이렇게 머리 결점 과 꼬리 결점 을 찾 는 시간 복잡 도 는 O (1) 입 니 다.
2. 더 블 링크 정의
// ,
typedef struct Node
{
elemType data;
Node *prior,*next;
};
typedef Node *List;
3. 더 블 링크 만 들 기
여기 서 주의해 야 할 것 은 링크 가 비어 있 는 것 은 머리 결점 의 전구 지침 과 후계 지침 이 모두 자신 을 가리 키 는 것 이다.따라서 결점 을 만 들 거나 삽입 할 때 머리 결점 의 전구 지침 을 마지막 결점 으로 수정 하 는 것 을 기억 해 야 한다.
4. 삽입 및 삭제
삽입: 삽입 위 치 를 찾 고 전구 결점 과 후계 결점 을 수정 하 는 지침
bool insert(List &l,int i,elemType e)
{
Node *p,*q,*s;
int j;
p = l->next;
//
for(j = 1;jnext;
}
s = (Node *)malloc(sizeof(Node));
s->data = e;
s->prior = p->prior;
s->next = p;
//
p->prior->next = s;
//
p->prior = s;
}
삭제: 삭제 노드 를 찾 아 전구 결점 을 수정 하 는 후계 지침, 후계 결점 의 전구 지침 을 찾 습 니 다.
bool deleteNode(List &l,int i)
{
Node *p;
int j;
p = l->next;
for(j = 1;jnext;
}
//
p->prior->next = p->next;
//
p->next->prior = p->prior;
//
free(p);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.