顺序储存结构-创新互联
#include
#include
typedef struct Arr
{
int *pBase;
int lenth;
int cnt;
}*PARR,ARR;
void init(PARR pArr,int len);
void show_arr(PARR pArr);
bool is_empty(PARR pArr);
bool is_full(PARR pArr);
bool append_arr(PARR pArr,int val);
bool insert_arr(PARR pArr,int pos,int val);
bool delete_arr(PARR pArr,int pos,int *pVal);
void inversion_arr(PARR pArr);//将数组逆序
void sort_arr(PARR pArr);//将数组内元素排序
int main()
{
ARR arr;
int pos1,val1,pos2,dnum;
init(&arr,6);
printf("初始化后");
show_arr(&arr);
for(int i=1;i<=5;i++)
append_arr(&arr,i);
printf("\n增添后的");
show_arr(&arr);
printf("\n请输入插入的位置:");
scanf("%d",&pos1);
printf("请输入插入的数据:");
scanf("%d",&val1);
if(insert_arr(&arr,pos1,val1))
{
printf("插入后的");
show_arr(&arr);
}
else
{
printf("插入失败");
}
printf("\n请输入删除的位置:");
scanf("%d",&pos2);
if(delete_arr(&arr,pos2,&dnum))
{
printf("删除的数据为:%d",dnum);
printf("\n删除后的");
show_arr(&arr);
}
else
{
printf("删除失败");
}
inversion_arr(&arr);
printf("\n逆序后的");
show_arr(&arr);
sort_arr(&arr);
printf("\n排序后的");
show_arr(&arr);
return 0;
}
void init(PARR pArr,int len)//pArr只是定义的结构体指针,通过它可以调用结构体中的数据
{
pArr->pBase=(int *)malloc(sizeof(int)*len);//分配大小为len的空间为数组空间,此时pBase可当数组用
if(pArr->pBase==NULL)
{
printf("内存分配失败!!");
exit(-1);
}
else
{
pArr->lenth=len;
pArr->cnt=0;
}
return ;
}
void show_arr(PARR pArr)
{
if(is_empty(pArr))
printf("顺序链表为空!!");
else
{
printf("顺序链表为:");
for(int i=0;i
printf("%d ",pArr->pBase[i]);//输出pArr指向的结构体中的pBase数组
}
return ;
}
bool is_empty(PARR pArr)
{
if(pArr->cnt==0)//实际长度为0才为空
return true;
else
return false;
}
bool is_full(PARR pArr)
{
if(pArr->cnt==pArr->lenth)//实际长度和大长度相同是该数组已满
return true;
else
return false;
}
bool append_arr(PARR pArr,int val)
{
if(is_full(pArr))//若数组已满则无法再在后面容纳数据
return false;
pArr->pBase[pArr->cnt]=val;//注意:第cnt个数据的数组下标为cnt-1
pArr->cnt++;//实际长度++
return true;
}
bool insert_arr(PARR pArr,int pos,int val)
{
if(is_full(pArr))//若数组已满则无法再有插入内存
return false;
if(pos<1||pos>pArr->cnt+1)
return false;
for(int i=pArr->cnt-1;i>=pos-1;i--)
pArr->pBase[i+1]=pArr->pBase[i];
pArr->pBase[pos-1]=val;
pArr->cnt++;
return true;
}
bool delete_arr(PARR pArr,int pos,int *pVal)
{
if(is_empty(pArr))
return false;
if(pos<1||pos>pArr->cnt)
return false;
*pVal=pArr->pBase[pos-1]; //
for(int i=pos;i
pArr->pBase[i-1]=pArr->pBase[i];//
pArr->cnt--;//
return true;
}
void inversion_arr(PARR pArr)
{
int i=0;//i为第一个元素下标
int j=pArr->cnt-1;//j为最后一个元素下标
int t;
while(i
t=pArr->pBase[i];
pArr->pBase[i]=pArr->pBase[j];
pArr->pBase[j]=t;
i++;
j--;
}
return ;
}
void sort_arr(PARR pArr)
{
int i,j,t;
for(i=0;i
{
for(j=i+1;j
{
if(pArr->pBase[i]>pArr->pBase[j])
{
t=pArr->pBase[i];
pArr->pBase[i]=pArr->pBase[j];
pArr->pBase[j]=t;
}
}
}
return ;
}
运行结果
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
标题名称:顺序储存结构-创新互联
网址分享:http://azwzsj.com/article/dpdpio.html