[C 언어] 데이터 구조 ― 동적 순서 표

지난 글 에서 말 한 것 은 정적 순서 표 이다. 정적 순서 표 는 처음에 전체 표 의 가치 길 이 를 정의 한 것 을 말한다.그러나 동태 적 인 순서 표 는 먼저 일정한 공간 을 개척 하고 공간 이 가득 차 면 우 리 는 계속 공간 을 열 어 데이터 의 보관 을 완성 하고 공간 을 점차적으로 열 어 보관 하 는 것 을 말한다.
    이것 이 바로 동적 순서 표 의 기본 논리 입 니 다. 제 가 직접 코드 를 올 리 겠 습 니 다. 쓸데없는 말 은 하지 않 겠 습 니 다.
순서 표 의 초기 화.우 리 는 다섯 개의 노드 공간 을 열 었 다.
void InitSeqList(SeqList* seq)
{
	assert(seq);
	seq->_arry = (DataType *)malloc(sizeof(DataType)*DEFAUIL_CAPACITY);
	seq->_size = 0;
	seq->_capicity = 5;
}

출력 순서 표
void PrintSeqList(SeqList* seq)
{
	size_t index;
	assert(seq);
	for(index = 0;index < seq->_size;index++)
	{
		printf("%d->",seq->_arry[index]);
	}
	printf("->NULL");
}

현재 순서 표 가 가득 찼 을 때, 이어서 순서 표 공간 을 만 듭 니 다.
void CreatLength(SeqList *seq)
{
	assert(seq);
	if(seq->_size == seq->_capicity)
	{
		seq->_capicity *= 2;
		seq->_arry = (DataType *)realloc(seq->_arry,sizeof(DataType)*seq->_capicity);
		if(seq->_arry == NULL)
		{
			printf("MALLOC ERROR");
			exit(0);
		}
	}
}

끝 삽입:
void PushBack(SeqList* seq, DataType x)
{
	assert(seq);
	assert(seq->_arry);
	CreatLength(seq);
	seq->_arry[seq->_size++] = x;
}

삽입:
void Insert(SeqList* seq, size_t pos, DataType x)
{
	size_t index;
	assert(seq);
	assert(0<=pos && pos<seq->_size);
	CreatLength(seq);
	for(index = pos;index < seq->_size;++index)
	{
		seq->_arry[pos+1] = seq->_arry[pos];
	}

}

지우 기;
void Erase(SeqList* seq, size_t pos)
{
	size_t endIndex;
	assert(seq);
	assert(0<=pos && pos<seq->_size);
	for(endIndex = pos;endIndex < seq->_size-1;endIndex++)
	{
		seq->_arry[endIndex] = seq->_arry[endIndex+1];
	}

}

모든 항목 삭제:
void RemoveAll(SeqList* seq, DataType x)
{
	size_t OneIndex = 0,TwoIndex = 0;
	int count = 0;
	assert(seq);
	for(;OneIndex < seq->_size;++OneIndex)
	{
		if(seq->_arry[OneIndex] != x)
		{
			seq->_arry[TwoIndex] = seq->_arry[OneIndex];
			TwoIndex++;
		}
		else
		{
			++count;
		}
	}
	seq->_size -= count;
}

이것 이 바로 순서 표 의 기본 적 인 실현 이다. 헤더 파일, 함수 라 이브 러 리 에 포함 되 지 않 고 실 현 된 구체 적 인 코드 를 말 했다.복사 해 보 세 요.
본 고 는 '남 은 알 군' 블 로그 에서 나 온 것 이 니 작가 에 게 연락 하 세 요!

좋은 웹페이지 즐겨찾기