데이터 구조 노트: 선형 표 순서 저장 구조 (C 언어)
3873 단어 데이터 구조
여기 에는 C 언어의 한 배열 로 순서 저장 구 조 를 실현 한다.
·
선형 표 의 데이터 대상 집합 은 {a1, a2, a3... an} 이 고 모든 요소 의 유형 은 같 습 니 다.사실은 첫 번 째 요소 a1 을 제외 하고 모든 요 소 는 하나의 직접적인 전구 요소 만 있 고 마지막 요소 an 을 제외 하고 모든 요 소 는 하나의 후계 요소 만 있다.데이터 요소 간 의 관 계 는 일대일 관계 이다.
Operation
InitList(*L); 초기 화 작업
ListEmpty(L);선형 표 가 비어 있 으 면 true 로 돌아 갑 니 다. 그렇지 않 으 면 false 로 돌아 갑 니 다.
ClearList(*L);선형 테이블 비우 기
GetElem(L,i,*e);선형 표 L 의 i 번 째 위치 요소 값 을 e 에 되 돌려 줍 니 다.
LocateElem(L,e);선형 표 L 에서 주어진 값 e 와 같은 요 소 를 찾 습 니 다. 찾 는 데 성공 하면 이 요 소 를 표 의 번호 로 되 돌려 줍 니 다.그렇지 않 으 면 0 으로 돌아 가 실 패 를 표시 합 니 다.
ListInsert(*L,i,e);선형 표 L 의 i 번 째 위치 에 새 요 소 를 삽입 합 니 다 e
ListDelete(*L,i,*e);선형 표 L 의 i 번 째 요 소 를 삭제 하고 e 로 값 을 되 돌려 줍 니 다.
OutputList(L);출력 선형 표 의 내용
구체 적 인 코드 는 다음 과 같다.
#include
#define MAXSIZE 50
int i;
typedef struct//
{
char data[MAXSIZE];
int length;
}List;
void InitList(List *P)//
{
int n;
for(i=0;ilength;i++)// \0
P->data[i] = '\0';
P->length = 0;
printf(" :");
scanf("%d",&n);
getchar();//
printf(" :");
for(i=0;idata[i]);
P->length++;
}
printf(" !
");
}
int ListEmpty(List L)// 0, 1
{
if(L.length == 0)//
return 0;
else
return 1;
}
void ClearList(List *P)//
{
for(i=0;ilength;i++)
P->data[i] = '\0';
P->length=0;
printf(" !
");
}
char GetElem(List L,int x,char e)// x e
{
if(x<1 || x>L.length)//
{
printf(" !
");
return 0;
}
else
{
e = L.data[x-1];
return e;
}
}
int LocateElem(List L,char e)
{
for(i=0;ilength == MAXSIZE)//
{
printf(" , !
");
return 0;
}
if(x<1 || x>P->length+1)// ,
{
printf(" , !
");
return 0;
}
if(x <= P->length)//
{
for(i=P->length-1;i>=x-1;i--)
P->data[i+1] = P->data[i];
P->data[x-1] = e;
P->length++;
printf(" !
");
return 1;
}
if(x == P->length+1)//
{
P->data[x] = e;
P->length++;
printf(" !
");
return 1;
}
}
char ListDelete(List *P,int x,char e)// x , e, 0
{
printf(" %d
",x);
if(P->length == 0)//
{
printf(" , !
");
return 0;
}
if(x<1 || x>P->length)//
{
printf(" , !
");
return 0;
}
if(x < P->length)//
{
e = P->data[x-1];
for(i=x;ilength;i++)
P->data[i-1] = P->data[i];
P->data[P->length-1] = '\0';
P->length--;
printf(" !
");
return e;
}
if(x == P->length)//
{
e = P->data[x-1];
P->data[x-1] = '\0';
P->length--;
printf(" !
");
return e;
}
}
void OutputList(List L)//
{
if(L.length == 0)
printf(" , !");
else
{
printf(" :
");
for(i=0;i
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.