순서 표 기본 작업 의 실현
5322 단어 데이터 구조
#include
#include
#define InitSize 100 //
#define OVERFLOW -2
typedef int ElemType; // , , int char , ElemType char
typedef struct{
ElemType *data; //
int MaxSize,length;// ( )
} SqList; //
int InitList(SqList *L){
L->data = (ElemType *)malloc(InitSize*sizeof(ElemType)); //
if(!L->data) exit(OVERFLOW);
L->length = 0; //
L->MaxSize = InitSize; //
return 1;
}
void CreatList(SqList *L,ElemType e){ // ,
if(L->length >= L->MaxSize)
printf("
");
L->data[L->length] = e;
L->length++;
return ;
}
int Length(SqList *L){
return L->length; //
}
int LocateElem(SqList *L,ElemType e){ // ,
int i;
for(i = 0;ilength;i++)
{
if(L->data[i] == e)
{
printf(" ,%d %d
",e,i+1);
return 0; //for e ,
}
}
printf(" 。");
return 0;
}
int GetElem(SqList *L,int i){ // ,
if(i<0 || i>L->length)
{
printf(" 。
");
}
else
{
i = L->data[i-1];
printf(" , %d
",i);
}
}
int ListInsert(SqList *L,int i,ElemType e){ // e
if(i<1 || i>L->length+1)
printf("
"); //
if(L->length >= L->MaxSize)
printf("
");
for(int j = L->length;j >= i;j--)
L->data[j]=L->data[j-1];
L->data[i-1] = e;
L->length++;
return 1;
}
int ListDelete(SqList *L,int i){ // , e ,
if(i<1 || i>L->length)
printf("
");
ElemType e = L->data[i-1];
for(int j=i;jlength;j++)
L->data[j-1] = L->data[j]; //
L->length--;
return e;
}
void PrintList(SqList *L){ //
int i;
for(i = 0;i < L->length;i++)
{
printf("%d",L->data[i]);
}
printf("
");
return ;
}
int Empty(SqList *L){
return L->length == 0;
}
//void DestroyList(SqList L){
// free(L);
//}
int main(){
SqList list;
InitList(&list);
int length;
printf(" :");
scanf("%d",&length);
int i;
ElemType temp;
printf(" :");
for(i = 0;i < length;i++)
{
scanf("%d",&temp);
CreatList(&list,temp);
}
printf(" :");
PrintList(&list);
int pos;
printf(" :");
scanf("%d %d",&pos,&temp);
ListInsert(&list,pos,temp);
printf(" :");
PrintList(&list);
printf(" :");
scanf("%d",&pos);
ListDelete(&list,pos);
printf(" :");
PrintList(&list);
printf(" :");
scanf("%d",&temp);
LocateElem(&list,temp);
printf(" :");
scanf("%d",&i);
GetElem(&list,i);
//DestroyList(list);
}
#define MaxSize 100 //
typedef int ElemType;
typedef struct{
ElemType data[MaxSize]; //
int length;// ( )
} SqList; //
1 차원 배열 은 정적 으로 분 배 될 수도 있 고 동적 으로 분 배 될 수도 있다.정적 분 배 를 할 때 배열 의 크기 와 공간 이 미리 고정 되 어 있 기 때문에 공간 이 가득 차 면 새로운 데 이 터 를 추가 하면 넘 쳐 서 프로그램 이 무 너 집 니 다.한편, 동적 분 배 를 할 때 배열 을 저장 하 는 공간 은 프로그램 이 실행 하 는 과정 에서 동적 저장 배분 문 구 를 통 해 분 배 된 것 으로 데이터 공간 이 가득 차 면 더 큰 공간 을 만 들 수 있다.#define InitSize 100 //
typedef int ElemType; // , , int char , ElemType char
typedef struct{
ElemType *data; //
int MaxSize,length;// ( )
} SqList; //
C 의 초기 동적 할당 문 구 는?L->data = (ElemType*)malloc(sizeof(ElemType)*InitSize);
C + + 의 초기 동적 할당 문 구 는?L->data = new ElemType[InitSize];
공간 이 부족 할 때 공간 을 재배 치 합 니 다.void Malloc(SqList *L)//
{
ElemType *newbase;//
newbase=(ElemType *)realloc(L->data,(L->MaxSize+AddSize)*sizeof(ElemType));
if(!newbase) exit(OVERFLOW);
L->data=newbase;
L->MaxSize+=AddSize;
}
AddSize 는 미리 정 의 된 값 으로 저장 공간의 분배 증 가량 이다.이 함수 에 프로그램 이 추가 되 지 않 았 습 니 다. 이 함 수 를 사용 하려 면 이 프로그램 에서 '현재 저장 공간 이 가득 찼 습 니 다' 를 출력 하여 이 함 수 를 호출 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.