데이터 구조의 선형 표 (순서 표) 의 기본 조작

5120 단어 데이터 구조
오늘 은 데이터 구 조 를 배 웠 습 니 다. 선형 표 의 순서 표를 보고 선형 표 에 대한 이 해 를 여러분 에 게 공유 하 겠 습 니 다.
선형 표 는 무엇 입 니까?
선형 표 는 n 개 요소 의 유한 한 서열 로 선형 표 중의 데이터 요소 의 개 수 는 선형 표 의 길이 가 된다.
순서 표 가 뭐 예요?
순서 표 는 선형 표 의 순서 저장 구조 이다.그 기본 사상 은 주소 연속 저장 장치 로 선형 표 의 데이터 요 소 를 순서대로 저장 하 는 것 이다.
       기본 사상 을 읽 으 면 순서 표 와 우리 가 배 운 배열 은 기본적으로 같 지만 완전히 같 지 않다. 배열 이 데 이 터 를 저장 할 때 데이터 요 소 는 배열 의 모든 위치 에 있 고 두 요소 사이 에 빈 값 이 존재 할 수 있다 는 것 을 쉽게 생각 할 수 있다.그러나 순서 표 는 안 됩 니 다. 순서 표 의 두 요소 사이 에 빈 값 이 있 으 면 안 됩 니 다.이게 순서 표 와 배열 의 차이 중 에 하나 인 것 같 아 요. 그 렇 죠?
됐어, 말 안 해도 소 용 없어.실현 과정 을 직접 쓰다.
우선 저장 구 조 를 정의 합 니 다.
typedef struct node
{
	int data[50];//            
	int length;//      
}Node;

상기 코드 에서 데이터 저장 구 조 를 정 의 했 는데 이 구조 에서 우 리 는 데이터 필드 와 순서 표 의 길 이 를 정의 했다.
선형 표 초기 화.C 언어 는 다음 과 같다.
//       
void InitList(Node *L)
{
	L->length = 0;
	printf("     
"); }

순서 표를 초기 화 하 는 것 은 비교적 간단 하 다. 우 리 는 시계의 길 이 를 0 으로 초기 화하 기만 하면 된다.
순서 표를 만 듭 니 다.C 언어 는 다음 과 같다.
bool CreatList(Node *L ,int a[],int n)
{
	if(n > MaxSize)//MaxSize         
	{
		printf("          
"); return false; } for(int i = 0;i < n;i++) { L->data[i] = a[i]; } L->length = n; printf("
"); return true; }

상기 코드 에서 선형 표를 만 들 고 매개 변수 선형 표 구조, 데이터 요소 a [] 와 데이터 요소 의 길이 n 을 입력 합 니 다.그 다음 에 데이터 요소 의 길이 가 순서 표 의 최대 길이 보다 큰 지 판단 한다. 만약 에 선형 표 의 최대 길이 보다 크 면 선형 표 가 모든 데이터 요 소 를 수용 하지 못 하고 false 로 돌아 가 표 작성 에 실 패 했 음 을 증명 한다.저장 할 수 있다 면 for 순환 을 통 해 데이터 요소 의 모든 값 을 순서대로 선형 표 에 입력 하고 선형 표 의 길 이 를 데이터 요소 의 길이 로 바 꾸 어 true 로 돌아 가 생 성 성공 을 표시 합 니 다.
판정 조작.C 언어 는 다음 과 같다.
bool Empty(Node *L)
{
	if(L->length == 0)//       true
	{
		return true;
	}
	else
	{
		return false;
	}
}

상기 코드 에서 진행 되 는 것 은 빈 칸 을 판단 하 는 작업 입 니 다. 우 리 는 length 가 0 인지 아 닌 지 를 판단 하면 됩 니 다. 만약 0 과 같 으 면 선형 표 에 요소 가 없 기 때문에 비어 있 습 니 다.
값 에 따라 찾다.C 언어 는 다음 과 같다.
//    
int Locate(Node *L ,int x)
{
	for(int i = 0; i < L->length; i++)
	{
		if(L->data[i] == x)
		{
			return i + 1;
		}
	}
	 return 0;
} 

상기 코드 에서 우 리 는 값 에 따라 조 회 를 하고 당신 이 조회 하고 자 하 는 값 X 를 입력 한 다음 에 for 순환 을 통 해 선형 표 의 모든 요소 와 X 를 비교 합 니 다. 만약 에 똑 같이 증명 하면 당신 이 원 하 는 값 을 찾 고 X 가 있 는 위 치 를 되 돌려 줍 니 다.순환 이 끝 날 때 까지 원 하 는 결 과 를 찾 지 못 하면 조회 가 실 패 했 음 을 증명 하고 결 과 를 0 으로 되 돌려 줍 니 다.
위치 별로 찾다.C 언어 는 다음 과 같다.
//    
bool Get(Node *L,int i,int *ptr) 
{
	if(i < 1||i >L->length)
	{
		printf("      ,    ");
		return false; 
	}
	else
	{
		*ptr = L->data[i - 1];
		return true;
	}
} 

상기 코드 에서 우 리 는 위치 에 따라 찾기 를 실현 하고 i 로 전 달 됩 니 다. i 위치 요소 의 값 을 찾 은 다음 요소 의 값 을 ptr 에 부여 합 니 다.먼저 우 리 는 i 에 대해 그 가 우리 선형 표 의 범위 내 에 있 는 지 판단 한다. 만약 에 i 가 1 보다 작 거나 i 가 선형 표 의 길이 보다 크 면 i 가 더 이상 선형 표 의 범위 내 에서 출력 검색 에 실패 하고 false 로 돌아 가 는 것 을 나타 낸다.그렇지 않 으 면 선형 표 의 아래 표 시 는 i - 1 의 요 소 를 ptr 에 할당 합 니 다.(왜 i - 1 은 배열 의 아래 표 시 는 0 에서 시작 되 고 우리 의 선형 표 는 1 에서 시작 되 기 때 문 입 니 다)
삽입 작업.C 언어 는 다음 과 같다.
//    
bool Insert(Node *L,int i,int x)
{
	if(L->length >= MaxSize)
	{
		printf("    ,    。");
		return false; 
	}
	if(i < 1 || i > L->length+1)
	{
		printf("    ,    ");
		return false; 
	}
	for(int j = L->length; j >= i; j--)
	{
		L->data[j] = L->data[j-1];
	}
	L->data[i-1] = x;
	L->length++;
	printf("    
"); return true; }

상기 코드 에서 선형 표 의 삽입 작업 을 실현 합 니 다.데 이 터 를 삽입 하 는 것 은 비교적 이해 하기 쉽다. 간단 한 예 를 들 어 매표소 앞 에 빽빽 하고 가지런 한 6 명의 대열 이 서 있다. 만약 에 대열 에 3 명의 뒤에 4 명의 대열 에 삽입 하고 싶다 면 어떤 과정 을 진행 할 것 인가?4, 5, 6 세 명 다 한 자 리 를 뒤로 물 러 나 야 되 는 거 아니 야?순서 표 의 삽입 과정 은 아까 의 예 와 같 습 니 다. 우 리 는 먼저 매개 변수 i 와 매개 변수 x 를 입력 합 니 다. 그 중에서 i 는 순서 표 의 몇 번 째 위치 에 데 이 터 를 삽입 하 는 것 을 표시 하고 x 는 삽입 할 데 이 터 를 표시 합 니 다.그 다음 에 순서 표 의 길 이 를 판단 한다. 만약 에 순서 표 의 길이 가 순서 표 의 길이 보다 크 거나 같 으 면 순서 표 가 이미 꽉 차 서 가입 할 수 없다 는 것 을 증명 한다.어떤 위치 에 데 이 터 를 추가 해 야 하 는 지 판단 합 니 다. 만약 에 위치 i 의 위치 가 온라인 표 의 범위 에 있 지 않 으 면 입력 이 합 법 적 이지 않다 는 것 을 증명 하고 false 로 돌아 갑 니 다.for 순환 은 '다른 사람 을 뒤로 물 러 나 게 하 라' 는 뜻 이다.그리고 순서 표 에 넣 으 면 순서 표 의 길이 가 하나 증가한다.트 루 로 돌아 가기.
삭제 작업.C 언어 는 다음 과 같다.
상기 코드 에서 우 리 는 순서 표 의 삭제 작업 을 실현 합 니 다.삭제 작업 이 더 이해 가 됩 니까? 아니면 위의 예 입 니까? 당신 이 파티 에서 걸 어 나 오 면 팀 은 어떤 과정 이 발생 합 니까?네가 나 온 후에 네 뒤의 모든 사람 은 한 사람의 자 리 를 앞으로 걸 어가 서 너의 빈 자 리 를 메 워 라.좋아, 위의 코드 는 바로 이런 과정 이 야.위치 i 의 데 이 터 를 삭제 하 겠 다 고 i 를 입력 하 십시오.삭제 한 요소 의 값 을 ptr 로 되 돌려 줍 니 다.두 가지 판단 과 삽입 중의 판단 은 하나의 뜻 입 니 다. 먼저 삭제 해 야 할 요 소 를 ptr 에 할당 한 다음 에 for 순환 을 통 해 삭 제 된 요소 가 비어 있 는 위 치 를 보완 한 다음 에 순서 표 의 길 이 를 1 로 줄 이 고 true 로 돌아 가 삭제 에 성공 했다 는 것 을 표시 합 니 다.
순서 표 의 길 이 를 구하 다.C 언어 는 다음 과 같다.
4. 567913. 상기 코드 에서 순서 표 의 길 이 를 구 하 는 것 을 실현 합 니 다. 방금 우리 가 저장 구 조 를 정의 할 때 length 는 순서 표 의 길 이 를 대표 하기 때문에 여기 서 우 리 는 length 로 돌아 가면 순서 표 의 길 이 를 알 수 있 습 니 다.
반복 작업.C 언어 는 다음 과 같다.
4. 567913. 상기 코드 에서 순서 표 의 옮 겨 다 니 기 작업 을 실현 하고 순서 표 의 옮 겨 다 니 기 와 배열 의 옮 겨 다 니 기 는 성 과 를 간단하게 이해 할 수 있다.
여기까지 쓰 고 나 는 이미 순서 표 의 간단 한 조작 들 을 모두 간단하게 서술 했다.위 에서 말 한 것 은 모두 순서 표 의 부분 조작 입 니 다. 모든 코드 를 클릭 하려 면 링크 를 클릭 하 십시오.
배열

좋은 웹페이지 즐겨찾기