您的位置:首页 > 教育 > 培训 > 官方网站建设 招标公告_私域流量管理工具_小学生一分钟新闻播报_关键词排名公司

官方网站建设 招标公告_私域流量管理工具_小学生一分钟新闻播报_关键词排名公司

2025/2/23 8:53:07 来源:https://blog.csdn.net/html3099/article/details/145618287  浏览:    关键词:官方网站建设 招标公告_私域流量管理工具_小学生一分钟新闻播报_关键词排名公司
官方网站建设 招标公告_私域流量管理工具_小学生一分钟新闻播报_关键词排名公司

1.顺序表的概念


顺序表:线性表的顺序存储,称为顺序表(数组)
线性表:是由多个类型相同
个数有限的数据元素组成的集合(属相)
顺序表:逻辑结构线性结构
存储结构:顺序存储
线性表的分类:顺序表,链表,栈,队列,数组,字符串

2顺序表的基本操作


2.1 创建顺序表

 Sqlist * create_Sqlist()
{//创建数据表Sqlist* list=(Sqlist*)malloc(sizeof(Sqlist));if(NULL==list){printf("creat_Sqlist false");return NULL;}//对数据元素清0memset(list->data,0,sizeof(list->data));//对顺序表长度清0list->len=0;return list;
}


2.2 顺序表的尾插

//尾插
int insert_rear(datatype element,Sqlist* list)
{//判满判空if(NULL==list||list->len==MAXSIZE){printf("insetr_rear error\n");return FALSE;}//尾插list->data[list->len]=element;list->len++;return  SUCCESS;
}


2.3 顺序表的遍历

      //循环遍历顺序表
int output_Sqlist(Sqlist *list)
{//1.顺序表创建失败//2.判空if(NULL==list || list->len==0){printf("out_sqlist error");return FALSE;}int i=0;while(i++<list->len){printf("%d",list->data[i]);}return SUCCESS;
}


2.4 顺序表尾删

//尾删
int  delete_rear(Sqlist* list)
{//判断创建//判空if(NULL==list ||list->len==0){printf("detele_rear error\n");return FALSE;}//尾删list->data[list->len-1]=0;list->len--;return SUCCESS;
}


2.5 顺序表按下表查找

//按下标查找
int locate_sub(Sqlist *list,int sub)
{//1.判断if(NULL==list||list->len==0){printf("insert_1 error");return FALSE;}if(sub<0 ||sub>list->len){printf("insert_sub error");return FALSE;}//2.查找printf("%d",list->data[sub]);return SUCCESS;
}


2.6 顺序表按下表删除

//按下标删除
int delete_sub(Sqlist *list,int sub)
{//1.判空//2.判溢出//3.按下标if(list->len==0&&NULL==list&&sub>0&&sub<list->len){printf("delete_sub error");return FALSE;}for(int i=sub+1;i<list->len;i++){list->data[i-1]=list->data[i];}list->len--;return SUCCESS;
}


2.7 顺序表按下表修改

//按下标修改
int revise_sub(Sqlist *list,int sub,datatype element)
{//1.判断if(NULL==list||list->len==0){printf("insert_1 error");return FALSE;}if(sub<0 ||sub>list->len){printf("insert_sub error");return FALSE;}//2.修改list->data[sub]=element;printf("%d",list->data[sub]);return SUCCESS;
}


2.8 顺序表按下表插入

//按下标插入
int insert_sub(Sqlist *list,int sub,datatype element)
{//1.插入失败if(NULL==list||list->len==0){printf("insert_sub error");return FALSE;}//2.创建//3.判断插入下标if(sub<0 ||sub>list->len){printf("insert_sub error");return FALSE;}//4.插入for(int i=list->len-1;i>=sub;i--)
{list->data[i+1]=list->data[i];}list->data[sub]=element;list->len++;return SUCCESS;
}

2.9顺序表按元素查找

//按元素查找
int locate_element(Sqlist *list,datatype element)
{//1.判断if(NULL==list||list->len==0){printf("create error");return FALSE;}//2.查找for(int i=0;i<list->len;i++){if(element==list->data[i]){return i;}}return FALSE;
}


2.10 顺序表按元素删除

//按元素删除
int delete_element(Sqlist *list,datatype element)
{int sub=locate_element(list,element);delete_sub(list,sub);
}


2.11 顺序表按元素修改

//按元素修改
int revise_element(Sqlist *list,datatype element1,datatype element2)
{int sub=locate_element(list,element1);revise_sub(Sqlist *list,datatype element2);return SUCCESS;
}

2.12去重

//去重
void deduplication(Sqlist *list)
{//1.判断if(NULL==list||list->len==0){printf("craete error");return NULL;}for(int i=0;i<list->len;i++){for(int j=i;j<list->len;j++){if(list->data[i]==list->data[j]){delete_sub(list,j);j--;}}}
}

2.13冒泡排序

//冒泡排序
void bubble_sort(Sqlist *list)
{int temp;for(int i=0;i<list->len;i++){for(int j=0;j<list->len-i-1;j++){if(list->data[j]>list->data[j+1]){int temp=list->data[j];list->data[j]=list->data[j+1];list->data[j+1]=temp;}}}int temp=list->data[i];list->data[i]=list->data[min];list->data[j]=temp;
}

2.14选择排序

/选择排序
void select_sort(Sqlist *list)
{int min;for(int i=0;i<list->len;i++){int min=i;for(int j=i+1;j<list->len;j++){if(list->data[j]>list->data[min]){min=j;}}int temp=list->data[i];list->data[i]=list->data[min];list->data[j]=temp;}
}

注:判断也可单独封装为一个函数。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com