데이터 구조 (C 언어) 단일 체인 테이블 기초 첨삭 검사

3337 단어
데이터 구조 라 는 과목 은 모든 프로그래머 가 반드시 익 혀 야 하 는 과정 이다. 게다가 성적 은 필요 하 다. 이 과목 에서 강의 하 는 지식 이 먼저 많 고 c 언어 프로 그래 밍 에서 비교적 복잡 한 것 을 사용 할 것 이다. 제때에 사례 를 직접 하지 않 으 면 안 된다. 이 블 로 그 는 데이터 구조 에서 말 하 는 단일 체인 표 의 가장 기본 적 인 첨삭 과 검 사 를 하 는 조작 방법 을 정리 할 것 이다.뒷 창고 와 대열 의 학습 에 편리 하도록 하 다.
1. 단일 체인 시계 가 무엇 입 니까?
단 방향 링크 (또한 명단 링크, 선형 링크) 는 링크 의 하나 로 링크 의 링크 방향 이 단 방향 이 고 링크 에 대한 방문 은 머리 부터 시작 하여 순서대로 읽 어야 한 다 는 것 이 특징 이다.wikipedia
첫 번 째 노드 에서 data 영역 이 비어 있 고 끝 노드 에서 가리 키 는 주 소 는 NULL 로 초기 화 되 는 것 이 특징 입 니 다.
2. 싱글 체인 시트 의 용도
단일 체인 표 의 기능 은 순서 표 와 비슷 하지만 서로 다른 상황 에서 알고리즘 의 시간 복잡 도 (이 알고리즘 이 이론 적 으로 실 행 된 시간 을 묘사 한 것) 는 크게 다르다.수정 데 이 터 를 찾 거나 데 이 터 를 읽 을 때 순서 표 가 큰 우 위 를 차지 하지만 삭제 작업 을 할 때 링크 는 우 위 를 차지한다. 이 유 는 삭제 할 때 순서 표 에서 증가 하거나 삭제 한 요소 후의 모든 요 소 는 뒤로 물 러 나 거나 앞으로 나 아가 순서 가 정확 해 야 하기 때문이다. 그리고 링크 는 구조 적 으로 하늘 에서 태 어 날 때 뒤의 요 소 를 움 직 이지 않 아 도 되 기 때문이다.주위 의 하나 또는 두 노드 의 지침 만 수정 하면 삭제 작업 을 완성 할 수 있 고 cpu 가 연산 하 는 시간 을 크게 줄 일 수 있 습 니 다.
3. 싱글 체인 시트 의 기본 조작
1. 싱글 체인 시트 만 들 기
단일 체인 표를 만 드 는 데 는 두 가지 흔히 볼 수 있 는 방식 이 있 습 니 다. 헤드 삽입 법 (헤드 노드 는 새로운 노드 를 계속 연결 합 니 다) 과 꼬리 삽입 법 (원래 링크 뒤에 노드 를 직접 추가 합 니 다) 주의: 헤드 삽입 법 은 입력 한 요소 와 출력 하 는 요소 의 순서 가 반대 되 고 꼬리 삽입 법 이 만 든 링크 는 정상 적 인 순서에 따라 출력 합 니 다.
1.1 헤드 삽입 법
//                
void Createlist_Head(LinkList &L,int n)
{
	LNode *p;
	int i = 0;
	L = (LinkList)malloc(sizeof(LNode));//      
	L->next = NULL; //      
	for(i = n;i>0;--i)
	{
		p = (LinkList)malloc(sizeof(LNode));//     
		scanf("%d",&p->data);
		p->next = L->next;
		L->next = p; 
	}
	//    
}

1.2 꼬리 삽입 법
//                
void Createlist_Tail(LinkList &L,int n)
{
	LNode *p,*q;
	int i = 0;
	L = (LinkList)malloc(sizeof(LNode));
	L->next = NULL;
	q = L;
	for(i;idata);
		q->next = p;                      		
		q = p; 
	}
	//     
	p->next = NULL;//       
}

2. 싱글 체인 시트 의 증가 (삽입)
//     
int Insert(LinkList &L,int n,int m)
{
	LNode *p = NULL,*q = NULL;
	int i = 0;
	p = L;
	while(p->next!=NULL&&inext;
		i++;
	}
	if(i=n-1)
	{
		q = (LinkList)malloc(sizeof(LNode));
		q->data = m; 
		q->next = p->next;
		p->next = q;
	}
	return OK;//         1 OK
}


3. 단일 링크 노드 삭제
//    
//                    
int Delete(LinkList &L,int n)
{
	LNode *p,*q;
	p = L; 
	int i = 0;//    p          n     
	while(p->next!=NULL&&inext;//q              
		p->next = q->next;//p              
		free(q);//     
	}
	p = p->next;// i   n       
	}
	
	return OK;
}

4. 단일 링크 가 지정 한 위치 에 대한 데이터 조회
//     
//   int                
int Getelem(LinkList L,int n)
{
 	LNode *p;//       
 	p = L;//      
	int i = 0;//       
	//   
	while(p->next->data != n&&p->next!=NULL)
	{
		p = p->next;
		i++;
	} 
	if(p->next->data == n)//             
	printf("
%d


",i); return OK; }

5. 출력 데이터
//     
void PrintElem(LinkList L)
{
	LinkList p = L->next;//          
	while(p)//            
	{
		printf("%5d",p->data);//      
		p = p->next;//     
	}
}

다음은 주 함수 전달 파 라 메 터 를 써 서 호출 하면 됩 니 다.

좋은 웹페이지 즐겨찾기