데이터 구조 코드 연습 (1) 순서 표 의 실현
3904 단어 데이터 구조
데이터 구 조 는 컴퓨터 나 다른 컴퓨터 관련 학 과 를 공부 하 는 핵심 과정 입 니 다. 제 가 있 는 대학교 에서 사용 하 는 교 재 는 청화대학 의 엄 울 민 교수 가 작성 한 데이터 구조 교재 입 니 다.이 책 은 나의 현재 수준 으로 볼 때 그것 을 평가 할 자격 이 없다.그러나 한 가지 말 할 수 없 는 것 은 이 숫자 안의 코드 는 대부분이 c 코드 의 위조 코드 로 보 여 주 는 것 이다.이것 은 많은 학습자 들 이 공부 할 때 실행 가능 한 프로그램 을 만들어 서 실험 할 수 없 게 한다.많은 학습 상의 불편 을 야기 하 였 다.여기 서 저 는 여러분 과 함께 데이터 구 조 를 분석 하고 학습 하 는 코드 를 드 리 겠 습 니 다.
데이터 구 조 를 언급 하면 먼저 말 해 야 한다.가장 기본 적 인 데이터 구조 인 선형 표.대부분의 데이터 구조 책 에서 가장 먼저 소개 되 는 것 도 이것 이다.선형 표 는 두 가지 가장 기본 적 인 저장 구조 가 있다.하 나 는 순서 저장 구조 이 고 하 나 는 체인 저장 구조 이다.오늘 은 순서 저장 구 조 를 논의 하 러 왔 습 니 다.
순서 저장 구조 란 주소 로 연 속 된 저장 장치 로 표 의 요 소 를 순서대로 저장 하 는 것 을 말한다.표 에서 요소 간 의 논리 적 관 계 를 나타 내기 위해 저장 공간 을 추가 로 늘 릴 필요 가 없다 (체인 식 저장 구조 에 비해 다음 요소 의 위 치 를 포인터 로 저장 해 야 하고 나중에 언급 할 것 이다). 또한 무 작위 액세스 의 데이터 구 조 를 실현 할 수 있다.
다음은 순서 표 의 실현 에 필요 한 헤더 파일 과 구조의 정의 입 니 다.
#include
#include
#include
#define INIT_SIZE 100
// int
typedef int dataType;
//
typedef struct {
dataType *data; //
int size; //
int maxSize; //
}SqList;
저장 구 조 를 논의 하 는 것 은 구조 적 정의 뿐만 아니 라 자주 사용 하 는 조작 도 고려 해 야 한다.삭제, 수정, 조사 등등.다음 순서 표 의 기본 동작 을 실현 합 니 다.
//
//
void InitList(SqList *l) {
//
l->data = (dataType*)malloc(INIT_SIZE * sizeof(dataType));
//
l->size = 0;
//
l->maxSize = INIT_SIZE;
}
// l k x
// , ,
void Insert(SqList *l, int k, dataType x) {
// 1,
if (k<1 || k>l->size + 1)
exit(1);
//
if (l->size == l->maxSize)
exit(1);
// i , k
for (int i = l->size; i >= k; i--) {
l->data[i] = l->data[i - 1];
}
// x k , 1
l->data[k - 1] = x;
l->size++;
}
// k
// ,
void Delete(SqList *l, int k) {
// 1
if (k < 1 || k > l->size)
exit(1);
//
for (int i = k; i < l->size; i++) {
l->data[i - 1] = l->data[i];
}
// 1
l->size--;
}
//
int empty(SqList *l) {
// , 0
return l->size == 0;
}
//
int full(SqList *l) {
// ,
return l->size == l->maxSize;
}
// i
//
dataType GetData(SqList *l, int i) {
//
if (i < 1 || i>l->size)
exit(1);
// i
return l->data[i - 1];
}
// x
//
int locate(SqList *l, dataType x) {
// , x 1
for (int i = 0; i < l->size; i++) {
if (l->data[i] == x) {
return i + 1;
}
return 0;
}
}
//
void Print(SqList *l) {
// ,
for (int i = 0; i < l->size; i++) {
printf("%d ", l->data[i]);
}
printf("
");
}
int main() {
// ,
SqList list;
SqList *pList = &list;
//
InitList(pList);
// 10。 10
Insert(pList, 1, 10);
// 20。 20 10
Insert(pList, 1, 20);
// 。 20
Delete(pList, 2);
// 30。 30 20
Insert(pList, 1, 30);
// 40。 40 30 20
Insert(pList, 1, 40);
//
Print(pList);
//
printf("%d
", GetData(pList,2));
system("pause");
return 0;
}
이상 은 순서 표 구조 와 기본 적 인 작업 의 실현 입 니 다. 이 블 로그 가 여러분 을 도 울 수 있 기 를 바 랍 니 다.어떤 의문 이나 가르침 이 있 으 면 댓 글 을 달 거나 메 일 을 제 메 일 로 보 낼 수 있 습 니 다.
제 메 일 은 요[email protected]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.