C 언어 구현 링크

데이터 구조 입문 링크
용 기 를 내 서 데이터 구 조 를 배 우 는 보 버 의 첫 번 째 접촉 은 순서 표 일 것 입 니 다. 그러면 배열 을 제외 하고 체인 식 방법 으로 순서 표를 실현 하 는 것 은 필수 입 니 다.
다음은 시계 길이, 찾기, 삽입, 삭제, 인쇄 를 통 해 강 강 강 이 어떻게 링크 를 작성 하 는 지 알 아 보 겠 습 니 다.
NO. 0 우선 링크 노드 의 정의
typedef struct Node *List;

struct Node {
     
	int d;
	List Next;
};

NO. 1 시계 장 으로 돌아 가기 쉬 워 요. count 하나 면...
int Length(List L){
     
	List p=L;
	int i=0;
	while(p){
     		// p!=NULL 
		p=p->Next;
		i++;
	}
	return i;
}

NO. 2 찾기 는 두 가지 로 나 뉘 어 있 습 니 다.
List FindKth (int k,List L){
     
	List p=L;				//   
	int i=1;
	while(i<k && p!=NULL){
     
		p = p->Next;	//         
		i++;
	} 
	if(i==k) return p;
	else return NULL;
} 

기억 하기: 여기 서 마지막 판단 은 바로 return p 하면 안 됩 니 다.
다음은 수치 에 따 른 것 이다.
List Find(int X,List L){
     
	List p=L;
	int i=1;
	while(p->d!=X && p!=NULL){
     
		p=p->Next;
		i++;
	}
	return p;
} 

NO. 3 여기에 삽입 하 는 것 은 i 에 값 을 X 로 삽입 하 는 결점 사고방식 이다. 구조 결점 s – > 제 I - 1 결점 을 찾 고 P 로 가리 키 기 – > 지침 수정
List Insert(int X,int i,List L){
     
	List p,s;
	if(i==1){
     		//     
		s = (List)malloc(sizeof(struct Node));
		s->d=X;
		s->Next=L;
		return s;
	} 
	
	p=FindKth(i-1,L);	//    I-1    , P  
	if(p==NULL){
     
		printf("ERROR
"
); return NULL; } else{ s = (List)malloc(sizeof(struct Node)); s->d = X; s->Next = p->Next; p->Next = s; return L; } }

NO. 4 여 기 를 삭제 하려 면 i 번 째 위치의 결점 사고방식 을 삭제 해 야 합 니 다. I - 1 번 결점 을 찾 으 면 P 로 가리 키 기 – > s 로 삭제 할 결점 을 가리 키 기 (p 의 다음) – > p 가 s 의 다음 을 가리 키 기 – > s 를 놓 기 기억 하 세 요. 절대로 놓 는 것 을 잊 지 마 세 요. 그렇지 않 으 면 메모리 가 새 요.
List Delete(int i,List L){
     
	List p,s;
	if(i==1){
     
		s=L;
		if(L!=NULL) L=L->Next;		//  ,         
		else return NULL;			//Empty 
		free(s);
		return L;
	}
	
	p=FindKth(i-1,L);
	if(p==NULL) return NULL;		   //         
	else if(p->Next==NULL) return NULL;//        
	else{
     
		s=p->Next;
		p->Next = s->Next;
		free(s);
		return L;
	}
}

NO. 5 인쇄
void print(List L){
     
	while(L!=NULL){
     
		printf("%d ",L->d);
		L=L->Next;
	}
} 

됐어 요. 쓰 고 메 인 함수 에 써 야 돼 요. 아니면 뭔 가 부족 하 다 고 생각 할 수도 있어 요.
malloc 를 사 용 했 기 때문에 헤더 파일 이 빠 지지 마 세 요.
#include
#include

주 함수 에서 반드시 기억 해 야 합 니 다. 빈 노드 는 NULL 을 가리 키 도록 정의 합 니 다!!미천 한 소 백 은 다 쓴 후에 어떻게 인쇄 하 든 문제 가 있 는데 NULL 이 없어 서 그런 것 같 습 니 다.
int main()
{
     
	List L=NULL;	//         
	int A[5]={
     5,4,0,3,9};
	for(int i=0;i<5;i++){
     
		L = Insert(A[i],i+1,L);
	}
	print(L);
	printf("
"
); L = Delete(3,L); print(L); return 0; }

이렇게 하면 테스트 할 수 있어 요.
오늘 의 데이터 구조 공 부 는 여기까지 입 니 다. 반갑습니다.
내일 도 문 제 를 잘 풀 고 연습 을 해 야 돼 요.
잘 자 요 ~

좋은 웹페이지 즐겨찾기