양방향 체인 시계를 만드는 함정!!
6226 단어 양방향 체인 테이블
1 Node *create()
2 {
3 ElemType data;
4 Node *head,*p,*s;
5 head=(Node*)malloc(sizeof(Node));
6 head->before=NULL;
7 p=head;
8 cout<<"input data,type 0 to stop input"<<endl;
9 while(1)
10 {
11 cin>>data;
12 if(data==0)
13 {
14 p->next=NULL;
15 break;
16 }
17 s=(Node*)malloc(sizeof(Node));
18 s->data=data;
19 p->next=s;
20 s->before=p;
21 p=s;
22 }
23 head=head->next;
24
25 return head;
26 }
답: 23줄에서 헤드헤드헤드헤드에 새로운 값이 부여된 후에 헤드->before는 원래의 헤드 결점을 가리키는데 원래의 헤드 결점은 데이터를 저장하지 않고 NULL과 같지 않기 때문에 아래에서 헤드->before를 사용하면 치명적인 오류가 발생하고 검사하기 어렵다.
지침의 기능은 매우 강하지만, 사용 시 매우 조심해야 한다!
수정된 코드
1 Node *create()
2 {
3 ElemType data;
4 Node *head,*p,*s;
5 head=(Node*)malloc(sizeof(Node));
6 p=head;
7 cout<<"input data,type 0 to stop input"<<endl;
8 while(1)
9 {
10 cin>>data;
11 if(data==0)
12 {
13 p->next=NULL;
14 break;
15 }
16 s=(Node*)malloc(sizeof(Node));
17 s->data=data;
18 p->next=s;
19 s->before=p;
20 p=s;
21 }
22 head=head->next;
23 head->before=NULL;
24 return head;
25 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
(검지 Offer) 면접 문제 27: 두 갈래 검색 트리와 양방향 체인 테이블두 갈래 검색 트리를 입력하여 이 두 갈래 검색 트리를 정렬된 양방향 체인 테이블로 변환합니다.새 결점은 만들 수 없으며 트리의 결점 포인터 방향만 조정해야 합니다. 두 갈래 나무의 정의는 다음과 같다. 두 갈래 나...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.