自学内容网 自学内容网

C语言实现顺序表

顺序表

1、创建顺序表

顺序表的定义:

#define MAX 10
typedef int datatype;
typedef struct{
datatype buf[MAX];
int n;
}seqlist;

创建顺序表

seqlist *create_seqlist(){
 seqlist *l=(seqlist *)malloc(sizeof(seqlist));
 if(NULL==l){
 printf("malloc fail!\n");
 return NULL;
 }

2、顺序表的插入

void insert_seqlist(seqlist *l,datatype data){
if(!is_full(l)){
     l->buf[l->n]=data;
l->n++;
}

}

3、顺序表的判满

int is_full(seqlist *l){
return l->n>=MAX?1:0;
}

4、顺序表的遍历输出

void print_seqlist(seqlist *l){
for(int i=0;i<l->n;i++){
printf("%d ",l->buf[i]);
}
}

5、顺序表的判空

int is_empty(seqlist *l)
{

return l->n==0?1:0;

}

6、顺序表的删除

int delete_seqlist(seqlist *l,datatype data){
if(is_empty(l)){
return -1;
}
int  i=0,j=0;
for(;i<l->n;i++){
if(l->buf[i]!=data){
l->buf[j++]=l->buf[i];
}
}

if(i==j){
return -1;
}
l->n=j;
return 1;
}

测试:

int main(){
seqlist *l=create_seqlist();
datatype data;
while(!is_full(l)){

scanf("%d",&data);
insert_seqlist(l,data);

}
print_seqlist(l);

printf("==================");

printf("please enter delete num");
datatype delete_num;
scanf("%d",&delete_num);
int result=delete_seqlist(l,delete_num);
if(result>0){
printf("delete success!\n");
print_seqlist(l);
}
else{
printf("delete fail!\n");

}


free(l);
l=NULL;

return 0;
}


原文地址:https://blog.csdn.net/qq_57907966/article/details/138004756

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!