동적 시퀀스 테이블 개념 g는
유효한 결정 소자는 상기 함수의 최대 용량과 동일한 추가 소자는 확장을위한 최대 유효 용량이 동일한 경우 때 시퀀스 테이블에 기초하여 최대 정적 용량.
둘째, 코드 쇼
1, 헤더 파일
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>
2, 문장 순서 표
#define initsize 2 //最大容量大小
typedef struct Sqlist
{
int *data;
int size;
int capacity;//最大容量变量名
};
3 기능 코드
//初始化
void initlist(Sqlist* sqlist)
{
assert(NULL!=sqlist);
sqlist->data = (int*)calloc(initsize,sizeof(int)*initsize);//2
sqlist->size=0;
sqlist->capacity=initsize;
}
//判满,增加
void CheckCapacity(Sqlist*sqlist)
{
assert(NULL!=sqlist);
if(sqlist->size==sqlist->capacity)
{
//方法一
int* newspace = (int*)realloc(sqlist->data,sizeof(int)*sqlist->capacity*2);
//方法二
/*int *newspace = (int*)calloc(sqlist->capacity*2,sizeof(int)*sqlist->capacity*2);
for(int i=1;i<=sqlist->capacity;i++)
{
newspace[i]=sqlist->data[i];
}
free(sqlist->data);*/
sqlist->data=newspace;
sqlist->capacity=sqlist->capacity*2;
}
}
//头插
void Ainsert(Sqlist*sqlist,int value)
{
assert(NULL!=sqlist);
CheckCapacity(sqlist);
if(sqlist->size==0)
{
sqlist->size++;
sqlist->data[0]=value;
}
else
{
for(int i=sqlist->size-1;i>=0;i--)
{
sqlist->data[i+1]=sqlist->data[i];
}
sqlist->data[0]=value;
sqlist->size++;
}
}
//逆置
void back(Sqlist*sqlist)
{
assert(NULL!=sqlist);
int start=0;
int end=sqlist->size-1;
for(int i=0;i<sqlist->size/2;i++)
{
int emp;
emp=sqlist->data[start];
sqlist->data[start]=sqlist->data[end];
sqlist->data[end]=emp;
start++;
end--;
}
}
//打印
void myprint(Sqlist*sqlist)
{
assert(NULL!=sqlist);
printf("data=");
for(int i=0;i<sqlist->size;i++)
{
printf("%d",sqlist->data[i]);
}
printf("\n");
}
셋째, 주요 기능
int main()
{
Sqlist sqlist;
initlist(&sqlist);
Ainsert(&sqlist,1);
Ainsert(&sqlist,2);
Ainsert(&sqlist,3);
Ainsert(&sqlist,4);
Ainsert(&sqlist,5);
Ainsert(&sqlist,6);
myprint(&sqlist);
back(&sqlist);
myprint(&sqlist);
}
여기에 바로 작성하고 여기에 여전히 프린트 헤드 보간 기능, 같은 다른 순서 테이블을 설명하지 않습니다.
넷째, 운영 결과