顺序储存结构-创新互联

#include
#include

创新互联是一家网站设计公司,集创意、互联网应用、软件技术为一体的创意网站建设服务商,主营产品:响应式网站建设、高端网站设计全网营销推广。我们专注企业品牌在网站中的整体树立,网络互动的体验,以及在手机等移动端的优质呈现。成都网站建设、成都网站设计、移动互联产品、网络运营、VI设计、云产品.运维为核心业务。为用户提供一站式解决方案,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏析悦目的作品,网站的价值服务。

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;icnt;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;icnt;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;icnt-1;i++)
 {
     for(j=i+1;jcnt;j++)
     {
         if(pArr->pBase[i]>pArr->pBase[j])
         {
             t=pArr->pBase[i];
             pArr->pBase[i]=pArr->pBase[j];
             pArr->pBase[j]=t;
         }
     }
 }
 return ;
}
运行结果afddd7d2a982497c85390efd3d65549e.jpg

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

当前标题:顺序储存结构-创新互联
文章分享:https://www.cdcxhl.com/article0/dpdpio.html

成都网站建设公司_创新互联,为您提供面包屑导航营销型网站建设移动网站建设商城网站标签优化网站导航

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计