데이터 구조 표 (1) 순서 표 의 실현 (C 언어)
4095 단어 데이터 구조 와 알고리즘데이터 구조c 언어순서 표
표, 창고, 대기 열, 나무, 그림 등 데이터 구조 에 대해 우 리 는 모두 순서 구조 나 체인 구 조 를 선택 하여 실현 할 수 있다. 다음은 표 의 순서 실현 을 보 여 준다.
이게 너무 쉬 워 서 코드 를 바로 올 리 는 거 예요.
데이터 구조
typedef struct SeqList
{
DATATYPE* data; //
size_t size; //
size_t capicity; //
}SeqList;
실현 인터페이스
void SeqListInit(SeqList* list, size_t capacity);
//
int CheckCapacity(SeqList* list);
// ,
void SeqListDestory(SeqList* list);
//
void SeqListPrint(SeqList* list);
//
void SeqListPushBack(SeqList* list, DATATYPE x);
//
void SeqListPushFront(SeqList* list, DATATYPE x);
//
int SeqListFind(SeqList* list, DATATYPE x);
//
void SeqListPopBack(SeqList* list);
//
void SeqListPopFront(SeqList* list);
//
void SeqListInsert(SeqList* list, size_t pos, DATATYPE x);
//
void SeqListErase(SeqList* list, size_t pos);
//
순서 표 초기 화
void SeqListInit(SeqList* list, size_t capacity)
{
assert(list);
DATATYPE* temp;
temp = (DATATYPE*)malloc(capacity * sizeof(DATATYPE));
if (NULL == list)
{
printf("
");
return;
}
list->data = temp;
list->size = 0;
list->capicity = capacity;
}
순서 표 의 소각
void SeqListDestory(SeqList* list)
{
assert(list);
list->size = 0;
list->capicity = 0;
free(list->data);
list->data = NULL;
}
순서 표 가 가득 찼 는 지 확인 하고, 가득 차 면 자동 으로 용량 을 늘 립 니 다.
int CheckCapacity(SeqList* list)
{
assert(list);
DATATYPE* temp;
if (list->capicity == list->size)
{
temp = realloc(list, 2 * LISTSIZE * sizeof(DATATYPE));
if (NULL == temp)
{
printf("
");
return 0;
}
else
{
list->data = temp;
printf("
");
}
}
return 1;
}
인쇄 순서 표
void SeqListPrint(SeqList* list)
{
assert(list);
size_t i = 0;
for (i = 0; i < list->size; i++)
{
printf("%d ", list->data[i]);
}
printf("
");
}
플러그
void SeqListPushFront(SeqList* list, DATATYPE x)
{
assert(list);
int i;
if (!CheckCapacity(list))
{
printf("
");
return;
}
for (i = list->size; i > 0; i--)
{
list->data[i] = list->data[i - 1];
}
list->data[0] = x;
list->size++;
}
꼬리 꽂 이
void SeqListPushBack(SeqList* list, DATATYPE x)
{
assert(list);
if (!CheckCapacity(list))
{
printf("
");
return;
}
list->data[list->size++] = x;
}
삭제 하 다
void SeqListPopFront(SeqList* list)
{
assert(list);
size_t i;
if (list->size == 0)
{
printf("
");
return;
}
for (i = 0; i < list->size - 1; i++)
{
list->data[i] = list->data[i + 1];
}
list->size--;
}
꼬리 꽂 이
void SeqListPopBack(SeqList* list)
{
assert(list);
if (list->size == 0)
{
printf("
");
return;
}
list->size--;
}
순서 표 찾기
int SeqListFind(SeqList* list, DATATYPE x)
{
assert(list);
size_t i;
for (i = 0; i < list->size; i++)
{
if (x == list->data[i])
{
printf("
");
return i;
}
}
printf("
");
return -1;
}
Pos 위치 에 삽입
void SeqListInsert(SeqList* list, size_t pos, DATATYPE x)
{
assert(list);
int i = 0;
if (!CheckCapacity(list))
{
printf("
");
return;
}
for (i = (int)list->size; i > pos -1; i--)
{
list->data[i] = list->data[i - 1];
}
list->data[pos - 1] = x;
list->size++;
}
Pos 위치 에서 삭제
void SeqListErase(SeqList* list, size_t pos)
{
assert(list);
size_t i;
if (list->size == 0)
{
printf("
");
return;
}
for (i = pos - 1; i < list->size - 1; i++)
{
list->data[i] = list->data[i + 1];
}
list->size--;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JAVA] 배열 회전 출력요소 가 출력 을 시작 하 는 위치 에 주의 하 십시오. 모두 몇 라운드 의 수출 이 있 습 니까? n/2 + 1 매 라 운 드 는 상, 우, 하, 좌 로 나 뉜 다. 각 방향의 시작 위치 와 좌표 의 관 계 를 구...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.