//线性表的顺序存储的实现
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
struct MArrayList{
int last;
int data[SIZE];
};
struct MArrayList *getMArrayList(){
struct MArrayList *m1 = (struct MArrayList*)malloc(sizeof(struct MArrayList));
if(NULL!=m1){
m1->last=-1;
}
return m1;
}
/**
在末尾添加一个数据
*/
void add(struct MArrayList *m,int value){
m->last++;
m-> data[m->last] = value;
printf("%d %d \n",m->last,m-> data[m->last]);
}
/**
在任意位置插入一个数据
*/
void insert(struct MArrayList *m,int value,int position){
int i;
for(i=m->last+1;i>position;i--){
m->data[i]=m->data[i-1];//从position开始 所有的数据向后移动一位 ,从最后一位开始移动
}
m->data[position]=value;
m->last++;
}
/**
按照值删除一个数据
*/
int deleteByValue(struct MArrayList *p,int value){
int i;
for(i=0;i<p->last+1;i++){
if(value==p->data[i]){
int j;
for(j=i;j<p->last+1;j++){//把删除位置后面的所有数据向前移动一位 移动从前面开始
p->data[j]=p->data[j+1];
}
p->last--;
return 1;
}
}
return 0;
}
/**
打印表的信息
*/
void print_info(struct MArrayList *p){
int i;
for(i=0;i<p->last+1;i++){
printf("%d \n",p->data[i]);
}
printf("size=%d \n",p->last+1);
}
/**
测试
*/
void test(){
struct MArrayList *m1 =getMArrayList();
if(NULL==m1){
printf("memery is not enought");
return;
}
add(m1,30);
add(m1,31);
add(m1,32);
add(m1,33);
add(m1,34);
add(m1,35);
deleteByValue(m1,34);
deleteByValue(m1,30);
insert(m1,99,2);
insert(m1,100,2);
print_info(m1);
}
int main(int argc, char *argv[]){
test();
}
C语言--线性表的顺序存储的实现
最新推荐文章于 2022-12-23 10:48:12 发布